About: | Schedule | Course Overview and Goals | Grading | |
Policies: | Lab Sessions | Lab Policies and Partners | Integrity | Accommodations | |
Links: | Piazza | CS31-S18 github | |
Help: | CS31 Ninjas | Tips for Success | Resources/Links | |
Rich Wicentowski Office: Science Center 251 Office hours: W 10:30am-12pm; Th 1pm-2:30pm |
David Mauskop Office: Science Center 262A Office hours: Th 3pm-5pm |
Class: Tues/Thurs 9:55-11:10am, Sci Center 199 |
Lab A: Wednesday 8:50-10:20am, Sci Center 240 Lab B: Wednesday 1:15- 2:45pm, Sci Center 240 Lab C: Wednesday 3:00- 4:30pm, Sci Center 240 |
Additionally, each week there will be supplemental (optional)
readings, many from the optional textbook:
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 multi-core 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 placement into CS31.
All of the readings listed below are required weekly readings are from on-line sources. Supplemental weekly readings are optional. Many supplemental readings are taken from the Bryant & O'Hallaron textbook (prefixed with "B&O"). The textbook covers material in much more depth than we will in this class. Take a look at tips for reading CS textbooks to help you determine what to focus on and how to get the most out of both the on-line required and supplemental textbook readings.
(This is tentative and will be updated as the semester progresses.)
WEEK | DAY | ANNOUNCEMENTS | TOPIC & READING | LABS & HW |
1 | Jan 23 | Course Introduction | ||
Jan 25 | Binary RepresentationSupplemental (Optional) Reading
| |||
2 | Jan 30 | Binary ArithmeticSupplemental
| ||
Feb 01 | Drop/Add Deadline (Feb 02) | Introduction to C programmingSupplemental | ||
3 | Feb 06 | Digital Circuits, part 1
Supplemental
| ||
Feb 08 | Digital Circuits, part 2
| |||
4 | Feb 13 | ISAs and Assembly
Supplemental
| ||
Feb 15 | ISAs and Assembly: x86
Supplemental
| |||
5 | Feb 20 | x86 Assembly, continued
Pointers and Memory, continued
Supplemental
| ||
Feb 22 | Pointers and Memory
Supplemental
| |||
6 | Feb 27 | The Stack
Supplemental
| ||
Mar 01 | Function calling and the stack
Supplemental
| |||
7 | Mar 06 | Arrays, Structs and Pointers
|
| |
Mar 08 | Midterm exam | |||
Mar 13 | Spring Break | |||
Mar 15 | ||||
8 | Mar 20 | Data structure alignment
| ||
Mar 22 | Memory Heirarchy and Storge
Caching
Supplemental
| |||
9 | Mar 27 | Caching
Supplemental
| ||
Mar 29 | CR/NC/W Deadline (Mar 30) | Memory Efficiency
| ||
10 | Apr 03 | Operating Systems
Supplemental
| ||
Apr 05 | OS Abstraction: Processes
| |||
11 | Apr 10 | fork, exec and wait
| ||
Apr 12 | OS Abstraction: Virtual MemorySupplemental
| |||
12 | Apr 17 | OS Abstraction: Virtual Memory and PagingSupplemental
| ||
Apr 19 | Parallel Systems and ProgrammingSMP and MulticoreOS Abstraction: Threads
Supplemental
| |||
13 | Apr 24 | OS Abstraction: Threads
Supplemental
| ||
Apr 26 | SynchronizationDeadlock, Race Conditions
Supplemental
| |||
14 | May 01 | |||
May 03 | Introduction to NetworkingCourse summary | |||
May 13 | Final Exam: Sunday May 13 2:00-5:00pm |