Announcements
Class Info
-
Professors: Andrew Danner and Tia Newhall
-
Lecturer: Scout Sinclair
-
Lecture: Tuesday/Thursday, 11:45-1:00, class meets on Zoom (meeting link posted in piazza)
-
Labs:
Section A
Wednesday 2:00pm (Danner)
Section B
Wednesday 2:00pm (Sinclair)
Section C
Wednesday 3:45pm (Newhall)
Section D
Wednesday 3:45pm (Sinclair)
Section E
Thursday 8:00am (Sinclair)
Section F
Thursday 9:45am (Sinclair)
Lab starts on Zoom, and moves to CS31 Slack individual help (use your
#lab_X
channel for your lab section): -
Ninjas: Asha, Elvis, Nana, Rebecca, Sojin, Tillie, Youssef, Sally, William, See CS31 Ninja Sessions.
Ninja Sessions are on Slack: CS31 Slack use the
#ninja_session
channel -
Office Hours: Office hours are on Slack: CS31 Slack use the
#office_hours
channel-
Mondays 9:30am - 10:30am (Danner)
-
Mondays 10:30am-11:30am (Sinclair)
-
Tuesdays 3:30pm - 4:30pm (Newhall)
-
Thursdays 8:00pm - 9:00pm (Danner)
-
Thursdays 9:00pm - 10:00pm (Newhall)
-
Fridays 1:00pm-2:00pm (Sinclair)
-
-
Text Book: Dive into Systems
-
Piazza: Q&A Forum
-
GitHub: Swarthmore GitHub Enterprise
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 quizes 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 Quizes: 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. You should read the assigned sections before class to prepare for the reading quiz. 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 | LABS/HOMEWORKS |
---|---|---|---|---|
1 | Feb 08 | Topics
Required Reading
| Lab 0 Assn: unix, vim, github, piazza Weekly Lab Exercise: Unix and C basics, git Lab 1 Assn: intro to C | |
2 | Feb 15 | Topics
Required Reading
| Read: About HW and Study Grps Written HW: HW 1: C Weekly Lab: C arrays, gdb, readfile Lab 2 Assn: C arrays | |
3 | Feb 22 | Topics
Required Reading | Written HW: HW 2: binary Weekly Lab: Logisim Setup Lab 3: Logisim | |
4 | Mar 01 | Topics
Required Reading
| Written HW: HW 3: arch Weekly Lab: Logisim ALU flags Lab 3 cont: Logisim Exam 1: logistics and rules | |
5 | Mar 08 | Exam 1 (Mar 11) | Topics
Required Reading | Exam 1: logistics and rules Written HW: HW 4: pointers Weekly Lab: gdb & valgrind Lab 4: C pointers |
6 | Mar 15 | Topics
Required Reading | Written HW: HW 5: assembly Weekly Lab: IA32 programming Lab 4 cont: Cpointers, IA32 assembly | |
7 | Mar 22 | Spring Break (Mar 24) | Topics
Required Reading | Written HW: HW 6: more assembly |
8 | Mar 29 | Topics
Required Reading
| Written HW: HW 7: DM caching Weekly Lab: 2D arrays Lab 5: gol | |
9 | Apr 05 | Topics
Required Reading
| Written HW: HW 8: Set Associative Caching Exam 2: logistics, rules, tips | |
10 | Apr 12 | Exam 2 (Apr 15) Drop deadline (Apr 16) | Topics
Required Reading
| Exam 2: logistics, rules, tips Some handy references for during the exam Written HW: HW 9: processes Weekly Lab: signals, circular arrays Lab 6 part 1: shell Lab 6 part 2: parsecmd |
11 | Apr 19 | Topics
Required Reading | Written HW: HW 10: VM Weekly Lab: C libraries, strings, 2D arrays Lab 6 part 2: parsecmd | |
12 | Apr 26 | Topics
Required Reading |
Weekly Lab: pthreads Inclass Exercise: pthread max Lab 7: Parallel GOL | |
13 | May 03 | Topics
Required Reading | Weekly Lab: pthreads Inclass Exercise: producer consumer Lab 7: Parallel GOL Final Exam: logistics, rules, tips | |
May 14 | Final |