Most likely, the programs that you have written so far in this course (and the other Computer Science courses that you took in the past) have been concerned with completing a single task. When two or more tasks were required of a program, each task was completed before the next task was started. We will begin this section by learning about threads, which are used to execute two or more tasks in parallel. Next, we will examine networking. Networking provides the means for two or more software applications running on separate computers to communicate with one another. We will then see how to combine threads and networking to create client and server applications that communicate over the Internet.

The notes are divided into the following sections: