CS 31: Introduction to Computer Systems — Spring 2020
Announcements
All course announcements will be on Piazza.
The class is transitioning to online instruction. Please refer to this page for details of the transition and FAQs.
Class Info
-
Class: Tuesday/Thursday, 1:15-2:30, SCI 199
-
Professor: Vasanta Chaganti, Lecturer: Scout Sinclair
-
Piazza: Piazza
-
Github: Swarthmore Github Enterprise
-
Grades: Grades will be posted on Piazza, using GradeSource.
Office hours:
Vasanta |
SCI 252D |
Tuesdays 2:45 - 4 PM |
Fridays 11 - 2 PM |
Scout |
SCI 262A |
Mondays 12 - 2 PM |
Thursdays 11 - 12:30 PM |
Weekly Lab Sessions
Lab Section A |
Vasanta |
Wednesday 8:50 - 10:20 |
SCI 240 |
Lab Section B |
Scout |
Wednesday 1:15 - 2:45 |
SCI 240 |
Lab Section C |
Scout |
Wednesday 3:00 - 4:30 |
SCI 240 |
The CS 31 Ninjas: Fefa, Greg, Karin, Tiffany
Ninja Session Times: Please bring your lab worksheets to Ninja sessions!
Saturdays 1 - 3 PM |
SCI 256 |
Sundays 7 - 9 PM |
SCI 256 |
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.
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 a reference book for upper-level courses.
Course Overview, Goals, and Structure
Welcome to CS31! This course is a broad introduction to computer science that focuses on how a computer actually works and how programs run on computers. We will examine how a program written in a high-level programming language like C or Python, is expressed as a series of instructions to a computer and the hardware and software components involved in doing so.
Topics we will cover in this course 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 primarily 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. 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 access. These are posted to the class piazza page.
WEEK | DATE | ANNOUNCEMENTS | TOPIC & READING | LABS/HOMEWORKS |
---|---|---|---|---|
1 | Jan 21 | Topics
Class Slides
Required Reading
| Wednesday LabWed Lab: C basics, gdb, git AssignmentsLab 0: unix, vim, github, piazza | |
Jan 23 | ||||
2 | Jan 28 | Topics
Class Slides
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab: C, arrays, scanf, gdb AssignmentsLab 2: C programming | |
Jan 30 | ||||
3 | Feb 04 | Topics
Class Slides
Required Reading
| Wednesday LabWed Lab: Logisim AssignmentsLab 3: Circuits/ALU | |
Feb 06 | ||||
4 | Feb 11 | Topics
Class Slides
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab: IA32,teardown Assignments | |
Feb 13 | ||||
5 | Feb 18 | Topics
Class Slides
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab gdb, valgrind, writing IA32 AssignmentsLab 4: C Pointers, IA32 | |
Feb 20 | ||||
6 | Feb 25 | Topics
Class Slides
Required Reading
Wednesday Lab Reading | Wednesday LabWed Lab tools for examining binary files Assignments | |
Feb 27 | ||||
7 | Mar 03 | Topics
Class Slides
Required Reading | Wednesday LabWed Lab gdb/ddd for binary files, man AssignmentsLab 5: maze lab cont. | |
Mar 05 | ||||
Mar 10 | Spring Break | |||
Mar 12 | ||||
Mar 17 | ||||
Mar 19 | ||||
8 | Mar 23 | Transition to Online Instruction | ||
Mar 24 | Topics
Class Slides
Required Reading | Assignments | ||
Mar 26 | ||||
9 | Mar 31 | Topics
Class Slides
Required Reading | ||
Apr 02 | ||||
10 | Apr 07 | Topics
Class Slides
Required Reading | AssignmentsLab 7: Shell Lab Part 1: Parse Commandline Library | |
Apr 09 | Advising Week Begins (Apr 13) | |||
11 | Apr 14 | Topics
Class Slides
Required Reading | AssignmentsLab 7: Shell Lab Part 2: Writing a Shell | |
Apr 16 | ||||
12 | Apr 21 | Topics
Class Slides
Required Reading |
AssignmentsLab 9: Parallel GOL (We are skipping Lab8) | |
Apr 23 | ||||
13 | Apr 28 | Topics
Class Slides
Required Reading
| ||
Apr 30 | Extended Drop Deadline (May 01) |