Announcements
Class Info
-
Professors: Rich Wicentowski and Andrew Danner
-
Class: Tuesday/Thursday, 9:55-11:10, Science Center 101
-
Labs:
Section A
Wednesday 8:50am-10:20am (Danner)
SCI 240
Section B
Wednesday 1:15pm-2:45pm (Wicentowski)
SCI 240
Section C
Wednesday 3:00pm-4:30pm (Wicentowski)
SCI 240
-
Ninjas: Youssef, Martina, Rez, Tshering — see CS31 Ninja Sessions.
-
Office Hours: Office hours are in person and on Slack: CS31 Slack (use the
#office_hours
channel)-
Tuesdays 2:00pm-3:00pm (Wicentowski)
-
Thursdays 2:00pm-3:00pm (Wicentowski)
-
Mondays 1:30pm-2:30pm (Danner)
-
Fridays 9:00am-10:00am (Danner)
-
-
Text Book: Dive into Systems
-
Ed: 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. 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, on-line text book: Dive into Systems by Matthews, Newhall, and Webb. (Two of the co-authors are Swarthmore CS faculty!)
Supplemental (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.
WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | LABS/HOMEWORKS |
---|---|---|---|---|
1 | Aug 31 | Topics
Required Reading
|
In-Lab AssignmentIn-Lab W1: C basics, gdb, git Lab and HomeworkLab 0: unix, vim, github, ed | |
Sep 02 | ||||
2 | Sep 07 | Topics
Required Reading
Pre-Lab Reading | In-Lab AssignmentIn-Lab W2: C, arrays, scanf, gdb Lab and HomeworkLab 2: C programming | |
Sep 09 | Drop/add ends (Sep 13) | |||
3 | Sep 14 | Topics
Required Reading | In-Lab AssignmentIn-Lab W3: Logisim Lab and HomeworkLab 3: Circuits/ALU | |
Sep 16 | ||||
4 | Sep 21 | Topics
Required Reading
Pre-Lab Reading |
In-Lab AssignmentIn-Lab W4: GDB Assembly/Machine Tear Down Lab and Homework | |
Sep 23 | ||||
5 | Sep 28 | Topics
Required Reading
Pre-Lab Reading |
In-Lab AssignmentIn-Lab W5: gdb, valgrind, writing IA32 Lab and HomeworkLab 4: C Pointers, IA32 | |
Sep 30 | ||||
6 | Oct 05 | Topics
Required Reading
Pre-Lab Reading | In-Lab AssignmentIn-Lab W6: tools for examining binary files Lab and Homework | |
Oct 07 | ||||
Oct 12 | Fall Break | |||
Oct 14 | ||||
7 | Oct 19 | Topics
Required Reading | In-Lab AssignmentIn-Lab W7: gdb/ddd for binary files, man Lab and HomeworkLab 5: (continued) | |
Oct 21 | ||||
8 | Oct 25 | Midterm (7:00-9:00pm, Sci Ctr 101) | ||
Oct 26 | Topics
Required Reading
Supplemental Lab Reading
|
In-Lab AssignmentIn-Lab W8: cmdline args, fileI/O, ParaVis, 2D arrays Lab and HomeworkLab 6: game of life | ||
Oct 28 | ||||
9 | Nov 02 | Topics
Required Reading
|
In-Lab AssignmentIn-Lab W9: C strings Lab and HomeworkLab 7: string library | |
Nov 04 | CR/NC/W Deadline (Nov 05) | |||
10 | Nov 09 | Topics
Required Reading
Pre-Lab Reading | In-Lab AssignmentIn-Lab W10: parsing strings, 2D arrays Lab and HomeworkLab 8: unix shell Homework: HW 8 | |
Nov 11 | ||||
11 | Nov 16 | Topics
Required Reading
Pre-Lab Reading | In-Lab AssignmentIn-Lab W11: circular arrays, signals Lab and HomeworkLab 8: (continued) Homework: HW 9 | |
Nov 18 | ||||
12 | Nov 23 | Topics
Required ReadingPre-Lab Reading | In-Lab AssignmentIn-Lab W12: pthreads: Part 1-4 LabLab 9: parallel gol | |
Nov 25 | Thanksgiving | |||
13 | Nov 30 | Topics
Required Reading |
In-class HWIn-class: Tuesday In-Lab AssignmentIn-Lab W13: pthreads: Part 5-8 LabLab 9: (continued) | |
Dec 02 | ||||
14 | Dec 07 | Topics
Required Reading | Lab and HomeworkLab help: SC256 1:15-4:30pm | |
Dec 12 | Final exam December 12 @ 7:00pm |