Announcements
Class Info
-
Professor: Tia Newhall
-
Lecture: Tuesday / Thursday, 11:20 AM - 12:35 PM, 104 Sci. Cntr.
-
Lab: Wednesday 10:30 AM - 12:00 PM (Tia Newhall), Martin 327
-
Ninjas: Aiperi, Caroline, Magnus, Wendy
-
Ninja Sessions: 2-4pm Sundays, 7-9pm Mondays, Martin 227
-
Office Hours
TBA
Martin 340
-
Textbook: Dive into Systems
-
EdSTEM: Q&A Forum
-
GitHub: Swarthmore GitHub Enterprise
Required Materials
-
Textbook: all readings will come from a free, online textbook: Dive into Systems by Matthews, Newhall, and Webb. (Two of the co-authors are Swarthmore CS faculty!) If you would like a print version of the textbook, it is available for purchase at the college bookstore. You are not required to purchace the print version of the textbook as the on-line version is available for you to use for free.
Course Overview, Goals, and Structure
This course is a broad introduction to computer science that focuses on how a computer works and how programs run on computers. We examine the hardware and software components required to go from a program expressed in a high-level programming language like C or Python to the computer actually running the program. This course takes a bottom-up approach to discovering how a computer works and introduces parallel and distributed computing with a specific focus on parallelism for multicore and other shared memory systems.
Topics include theoretical models of computation, data representation, machine organization, assembly and machine code, memory, I/O, the stack, the operating system, compilers and interpreters, processes and threads, and synchronization. In addition to parallel programming, we will discuss parallel computers and system-level support for parallel computing.
Prerequisite: Completion of CS21 or its equivalent.
Goals for the Course:
Class Structure
-
Readings: Shorter readings serve as a first exposure to new topics, where students learn the basics of the material. These should be read prior to the class meeting for which they are assigned. The reading quizzes are primarly based on these readings. Full required weekly readings complement lecture content. See tips for reading textooks for how to read these.
-
Class meetings: The classroom material will cover the course concepts in depth, and include activites to practice applying concepts learned, and to facilitate student discussion.
-
Exams: There is a midterm exam and a final exam (both closed-book) covering the material in the class meetings (and to a lesser extent on some labs). Some reference materials will be provided with the exams.
-
Labs: There are several lab programming assignments (mostly in C) that will explore various aspects of computer systems.
-
Reading Quizzes: Most class meetings there will be a short quiz primarily based on the shorter assigned readings.
-
Written Homeworks: There are several written homework assignments. Written homeworks are on based on class material and provide good practice for exams.
Schedule
This is a tentative schedule; it may change as we go. All section numbers refer to the Dive into Systems textbook unless otherwise indicated. You should read the assigned sections before class to prepare for reading quizzes.
Read tips for reading CS textbooks to help you determine what to focus on and how to get the most out of required readings.
| WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | ASSIGNMENTS/WEEKLYLABS |
|---|---|---|---|---|
| 1 | Sep 01 | — |
Introduction, BinaryFor Tues:
For Thurs:
For Weekly Lab: |
|
Sep 03 | — | |||
| 2 | Sep 08 | — | Binary, Intro to CFor Tues: For Thurs: For Weekly Lab:
|
|
Sep 10 | Drop/Add Ends (Sep 14) | |||
| 3 | Sep 15 | — | Computer Architecture, Digital CircuitsFor Tues: For practice: For Thurs: |
|
Sep 17 | — | |||
| 4 | Sep 22 | — | Computer Architecture, C PointersFor Tues: For Thurs:
|
|
Sep 24 | — | |||
| 5 | Sep 29 | — | AssemblyFor Tues:
For Thurs: For Weekly Lab:
Assembly Tool to try out:
|
|
Oct 01 | — | |||
| 6 | Oct 06 | — | Assembly: FunctionsFor Tuesday: For Thursday:
For Weekly Lab:
Assembly Tool to try out:
|
|
Oct 08 | — | |||
| — | Oct 13 | Fall Break | ||
Oct 15 | ||||
| 7 | Oct 20 | — | C Structs and 2D arrays, Assembly, Memory HierarchyFor Tuesday:
For Thursday: |
|
Oct 22 | — | |||
| 8 | Oct 27 | — | Memory Hierarchy, CachingFor Tues:
For Thurs: For Weekly Lab:
|
|
Oct 29 | — | |||
| 9 | Nov 03 | — | Caching, OS, ProcessesFor Tues:
For Thurs: Try out some caching exercises for more practice:
|
|
Nov 05 | Last Day to Declare CR/NC (Nov 06) | |||
| 10 | Nov 10 | — | OS, Processes, VMFor Tues: For Thurs: For Weekly Lab: Try out some OS exercises for more practice:
|
|
Nov 12 | — | |||
| 11 | Nov 17 | — | OS, VM, ParallelFor Tues: For Thurs: For Weekly Lab: Try out some OS exercises for more practice:
|
|
Nov 19 | — | |||
| 12 | Nov 24 | — | Parallel Programming, ThreadsFor Tues: |
|
Nov 26 | Thanksgiving | |||
| 13 | Dec 01 | — | Parallel, Synchronization, PerformanceFor Tues: For Thurs: Try out some thread exercises for more practice: |
|
Dec 03 | — | |||
| 14 | Dec 08 | — | Parallel, Course Wrap-upFor Tues: |
|
Dec 10 | — | |||