CS 31: Introduction to Computer Systems — Fall 2019
Announcements
Class Info
Professor: Tia Newhall, Office hours: Tuesdays 3-4, Fridays 2:30-3:30, and by appointment, Office: Sci 249
Lecturer: Scout Sinclair, Office hours: Mondays 12-2, and by appointment, Office: Sci 262A
Class: Tuesday/Thursday, 1:15-2:30, Science Center 199
Lab Section A |
Wednesday 8:50 - 10:20 |
SCI 240 |
Lab Section B |
Wednesday 1:15 - 2:45 |
SCI 240 |
Lab Section C |
Wednesday 3:00 - 4:30 |
SCI 240 |
Ninja Session: Sundays, 7-11 SCI 256
Piazza: Q&A Forum
GitHub: Swarthmore GitHub Enterprise
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. 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 courses.
-
Textbook: This semester all readings will come from the beta release version a free, on-line text book written by two Swarthmore CS professors and a professor from West Point: Dive into Systems by Matthews, Newhall, and Webb. The user name and password for our class' access to the textbook are posted to the piazza page.
Supplimental (optional) Materials
-
An additional (not required) reference is available on reserve at Cornell library: Computer Systems: A Programmer’s Perspective by Bryant and O’Hallaron (Second edition: 2/E CS:APP2e). This is a nice source for additional practice problems, and an excellent reference for upper-level courses.
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.
Note: the textbook requires a user name and password to acceses. These are posted to the class piazza page.
WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | LABS/HOMEWORKS |
---|---|---|---|---|
1 | Sep 03 | Topics
Required Reading
| Wednesday LabWed Lab: C basics, gdb, git AssignmentsLab 0: unix, vim, github, piazza | |
Sep 05 | ||||
2 | Sep 10 | Topics
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab: C, arrays, scanf, gdb AssignmentsLab 2: C programming Written HW: HW 1 | |
Sep 12 | Drop/add ends (Sep 13) | |||
3 | Sep 17 | Topics
Required Reading
| Wednesday LabWed Lab: Logisim AssignmentsLab 3: Circuits/ALU Written HW: HW 2 | |
Sep 19 | ||||
4 | Sep 24 | Topics
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab: IA32,teardown Assignments | |
Sep 26 | ||||
5 | Oct 01 | Topics
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab gdb, valgrind, writing IA32 AssignmentsLab 4: C Pointers, IA32 Written HW: HW 4 | |
Oct 03 | ||||
6 | Oct 08 | Topics
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab tools for examining binary files AssignmentsLab 5: maze Written HW: HW 5 | |
Oct 10 | ||||
Oct 15 | Fall Break | |||
Oct 17 | ||||
7 | Oct 22 | Topics
Required Reading
| Wednesday LabWed Lab gdb/ddd for binary files, man AssignmentsLab 5: maze lab cont. | |
Oct 24 | ||||
8 | Oct 28 | Midterm (7:00-9:00pm, Sci Ctr 101) | ||
Oct 29 | Topics
Required Reading
| Wednesday LabWed Lab gdb/ddd for binary files, man AssignmentsLab 5: maze cont. Written HW: HW 6 | ||
Oct 31 | ||||
9 | Nov 05 | Topics
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab cmdline args, fileI/O, ParavVis, 2D arrays AssignmentsLab 6: GOL Written HW: HW 7 | |
Nov 07 | CR/NC/W Deadline (Nov 08) | |||
10 | Nov 12 | Topics
Required ReadingWednesday Lab Reading | Wednesday LabWed Lab C libraries, signals, circular arrays AssignmentsLab 7: unix shell Written HW: HW 8 | |
Nov 14 | ||||
11 | Nov 19 | Topics
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab C strings, implementing a library AssignmentsLab 8: parsecmd library Written HW: HW 9 | |
Nov 21 | ||||
12 | Nov 26 | Topics
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab pthreads AssignmentsLab 9: parallel gol | |
Nov 28 | Thanksgiving | |||
13 | Dec 03 | Topics
Required Reading
| Wednesday LabWed Lab more pthreads AssignmentsTues: in-class Tuesday | |
Dec 05 | ||||
14 | Dec 10 | Topics
Required Reading
|
| |
Dec 12 | ||||
Dec 17 | Final (2:00-5:00pm, Sci Ctr 101) |