Announcements
Class Info
-
Professor: Rich Wicentowski
-
Labs: Charles Kazer, Kevin Webb
-
Class: Tuesday / Thursday, 8:30 AM - 9:45 AM, Science Center 101 (Chang Hou Hall)
-
Labs:
Section A
Friday 8:50 AM - 10:20 AM (Wicentowski)
SCI 240
Section B
Friday 1:15 PM - 2:45 PM (Kazer)
SCI 240
Section C
Friday 3:00 PM - 4:30 PM (Kazer)
SCI 240
Section D
Friday 1:15 PM - 2:45 PM (Webb)
SCI 256
-
Ninjas: Zach (Lab A), Trisha (Lab B), Jasmine (Lab C), Paulina (Lab D) — see CS31 Ninja Sessions.
-
Office Hours:
-
Tuesday 2:00 PM - 3:15 PM (Rich — SCI 251)
-
Wednesday 11:00 AM - 12 noon (Kevin — SCI 255)
-
Wednesday 1:30 PM - 3:30 PM (Charlie — SCI 262A)
-
Thursday 10:00 AM - 11:45 AM (Rich — SCI 251)
-
Thursday 11:30 AM - 12:30 PM (Kevin — SCI 255)
-
-
Textbook: Dive into Systems
-
EdSTEM: Q&A Forum
-
GitHub: Swarthmore GitHub Enterprise
Inclusion Statement
Diversity, inclusion, and a mutual sense of belonging are all core values of this course. All participants in this course must be treated with respect by other members of the Swarthmore CS community. We must all strive, students and faculty both, to never make anyone feel unwelcome or unsafe in any way. Violations of these principles are viewed as unacceptable, and we take them very seriously. If you ever feel discriminated against or otherwise excluded, no matter how minor the offense, we encourage you to reach out to Rich, Kevin, Charlie, one of the college deans, or campus non-discrimination contacts.
Required Materials
-
iClicker: This course uses iClicker devices to facilitate feedback and discussion during class. For many intermediate and upper level CS courses including CS 31, we require that students purchase their own clicker for personal use. Clickers may be purchased at the college bookstore or online. If you purchase your clicker at the bookstore, it is eligible for the TAP program. Please register your clicker online as soon as possible! Even if you have used clickers in other CS courses, you still need to register your clicker for use in this course.
-
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!)
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.
Week | Day | Recordings | Topic, Readings & Slides | Labs & Homeworks |
---|---|---|---|---|
1 | Jan 17 | Course Introduction | ||
Jan 19 | ||||
Jan 20 | ||||
2 | Jan 24 |
| ||
Jan 26 | No HW | |||
Jan 27 | NOTE: Drop/add ends | |||
3 | Jan 31 | Digital Circuits |
| |
Feb 02 | Digital Circuits (continued) | |||
Feb 03 | ||||
4 | Feb 07 | Data Representation |
| |
Feb 09 | ISAs and Assembly (continued) | |||
Feb 10 | ||||
5 | Feb 14 |
| ||
Feb 16 | Pointers and Memory (continued) | |||
Feb 17 | ||||
6 | Feb 21 |
| ||
Feb 23 | Functions and the Stack (continued) | |||
Feb 24 | ||||
7 | Feb 28 | Arrays, Structs, and Pointers |
| |
Mar 02 | Arrays, Structs, and Pointers (continued) | No HW | ||
Mar 03 | Lab 5 (cont.) | |||
Mar 07 | Spring Break | |||
Mar 09 | ||||
Mar 10 | ||||
8 | Mar 14 | Arrays, Structs, and Pointers (continued) | No HW | |
Mar 16 | Midterm | |||
Mar 17 | ||||
9 | Mar 21 | Storage and the Memory Hierarchy | ||
Mar 23 | Caching | |||
Mar 24 | NOTE: CR/NC/W Deadline | Lab notes - same notes from Week 8 | Lab 6 (cont.) | |
10 | Mar 28 | Caching (continued) |
| |
Mar 30 | Operating Systems | |||
Mar 31 | No Recording | |||
11 | Apr 04 | Processes | ||
Apr 06 | Virtual Memory | |||
Apr 07 | Lab, Week 10 | Lab 8 part 1 | ||
12 | Apr 11 | Virtual Memory (continued) | ||
Apr 13 | Parallel Applications and Threading |
| ||
Apr 14 | Lab 8 part 2 | |||
13 | Apr 18 | Race Conditions and Synchronization |
| |
Apr 20 | Other Synchronization & Thread Design Patterns | |||
Apr 21 | ||||
14 | Apr 25 | Deadlock and Other Parallel Problems |
| |
Apr 27 | ||||
Apr 28 | Lab 9 (cont.) | |||
May 04 | FINAL EXAM @ 2PM |