CPSC 31 Fall 2012

Introduction to Computer Systems

Schedule | Grading | Ninjas | Lab Policies | Integrity | Accommodations | Links



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 shared memory parallelism for multicore and SMP 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.

Class information

Professor: Tia Newhall
Office: Science Center 249
Phone: (610) 690-5637
Office hours: Thurs 1:30-3:00 and by appointment

Room: Science Center 256
Class Time: 11:20 TR
Lab A Time: 1:00 Mondays
Lab B Time: 2:40 Tuesdays

Text: Computer Systems: A Programmer's Perspective, 2/E (CS:APP2e)
        Bryant and O'Hallaron, Prentice Hall, 2011, ISBN: 0-13-610804-0


(This is tentative. It will be updated as we go.)
1 Sep 04 Using Unix Session: Wed 7-8pm (Sep 05)
Using Unix Session: Mon 4-5pm (240 Sci Cntr) (Sep 03)
Chapter 1, 2.1-2.2
figures 1.5-1.7
  • Introduction
  • Data Representation
Mon/Tues lab
Sep 06   Lab 1
2 Sep 11   Chapter 2, 1.4 Mon/Tues lab
Sep 13 Drop/Add ends (Sep 14) Lab 2
3 Sep 18   Skim Chapter 1.4, 4.2
  • Program Execution
  • Computer Fundmentals
Mon/Tues lab
Sep 20  
4 Sep 25   Chapter 3.1-3.6 (skip 3.5.5)
  • Machine level Programing
  • Assembly Language
  • Data Movement, Arithmetic/Logic
  • Control Flow
Mon/Tues lab
Sep 27   Lab 3
5 Oct 02   Chapter 3.6-3.9 (skip 3.8.4, 3.8.5, 3.9.2)
  • Assembly Programing
  • Functions and the Stack
Mon/Tues lab
Oct 04   Lab 4
6 Oct 09   Chapter 3.9-3.12, 3.15, 5.1
  • Assembly Programing
  • The Stack
  • Functions
  • Arrays, Structs, Pointers
Mon/Tues lab
Oct 11  

Oct 16

Fall Break

Oct 18

7 Oct 23   Chapt. 5.1
  • Arrays, Structs, Pointers
  • Buffer Overflow
  • Compilers, Compiler Optimization
Mon/Tues lab
Oct 25  
8 Oct 30   Chapt. 1.5-1.7, 6, motherboard fig
  • Compilers and Operating Systems
  • Memory Heirarchy
  • Caching
Mon/Tues lab
Nov 01 Midterm: Thursday 7:30-9:30pm
room 181 Sci Cntr
lab 5
9 Nov 06   Chapt. 6, 1.7, 7.1-7.10 (skim)
  • Compilers and Operating Systems
  • Caching
  • Linking and Loading
Mon/Tues lab
Nov 08   Lab 6
10 Nov 13   Chapt. 1.7, 8.1-8.5, 9.1-9.3, 9.9
  • Operating Systems
  • Processes
  • Virtual Memory
  • Dynamic Memory Management
Thursday's Sides
Mon/Tues lab
Nov 15   Lab 7
11 Nov 20   Chapt. 1.7, 1.9, 12
  • Parallel Systems and Programming
  • SMP and Multicore
  • Threads
Mon/Tues lab
Nov 22 Thanksgiving Break
12 Nov 27   Chapt. 12
  • Parallel Systems and Programming
  • Synchronization
  • Deadlock, Race conditions
Mon/Tues lab
Nov 29   Lab 8
13 Dec 04   Chapt. 12
  • Parallel Systems and Programming
Mon/Tues lab
Dec 06    
14 Dec 11  
  • Wrap-up and Review

Dec 15

Final exam 9:00 am - noon (Sci Cntr 104 & 105)


Your overall grade in the course will be determined as follows:
50%Labs and Written Assignments
25%Final exam (Dec. 15, 9am-noon)
20%Midterm exam (Thursday Nov. 1, 7:30-9:30pm, 181 Sci Center)
5%Class Participation and Attendance

CS 31 Ninjas

The CS31 Ninjas are student mentors who will assist me in lab sections and run evening study sessions. You are encouraged to participate in Ninja evening study sessions to get friendly assistance on lab assignments and help preparing for exams.

Weekly Evening Ninja Session: Thursdays 7-11pm, Sci Center

The CS31 Ninjas:   Chloe, Emily and Gabe
Ninja Coordinator:   Frances Ruiz

Policy on Lab and Written Homework Assignments

Lab assignments will typically be assigned in class on Thursday and be due the following Friday evening. You are strongly encouraged to start early and ask questions early if you get stuck. For some assignments you must work individually. For others you will work with a partner.

Late lab and written assignments will not normally be accepted; however, special exceptions can be made if you contact me well in advance of the deadline (having a lot of work in other classes does not qualify for a special exception). Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.

Some labs may take a considerable amount of time, so you are strongly encouraged to begin working on assignments well before the due date.

You will submit you assignments electronically using the handin31 program. You may submit your assignment multiple times, but each submission overwrites the previous one and only the final submission will be graded.

Even though our class and the scheduled labs are held in Sci Cntr 256, I encourage you to work in one of the CS labs when possible. You will not need to remotely connect, and some programs will run faster.

The CS labs are available 24 hours a day 7 days a week for CS lab work. Just swipe your ID to gain access on weekends and evenings when the CS lab doors are closed and locked. Please review the CS Lab Rules and CS User Rules about appropriate use of CS labs.

Academic Integrity

Academic honesty is required in all work you submit to be graded. With the exception of your partner on lab assignments, you may not submit work done with (or by) someone else, or examine or use work done by others to complete your own work. Not all lab assignments will be done with a partner.

You may discuss lab specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of your lab partner, you may not work with others on your lab assignments in any capacity.

All code you submit must be your own with the following permissible exceptions: code distributed by me as part of the class, code found in the course text book, and code worked on with your lab partner. You should always include detailed comments that indicates which parts of the lab you received help on, and what your sources were.

Please see me if there are any questions about what is permissible.

Accommodations Statement

If you believe that you need accommodations for a disability, please contact Leslie Hempling in the Office of Student Disability Services (Parrish 130) or (e-mail lhempli1 AT swarthmore DOT edu) to set up an appointment to discuss your needs. Leslie Hempling is responsible for reviewing and approving disability-related accommodation requests. As appropriate, she will issue students with documented disabilities an Accommodation Authorization Letter. Since accommodations require early planning and are not retroactive, please contact her as soon as possible. For details about the Student Disabilities Service and the accommodations process, visit the Disability Services website. You are also welcome to contact me privately to discuss your academic needs. However, all disability-related accommodations must be arranged through Leslie Hempling in the Office Of Student Disability Services.

Below are some resources and links which may be helpful to you.