- All sections will meet at their scheduled lab time during the first week of classes, including section A03 on Monday, January 9th.
Times and Locations
- Lecture: 2:30-3:45PM Tuesday and Thursday, KCK 100
- Laboratory for section A01: 4:00-5:30PM Tuesday, DCH Sym II Lab
- Laboratory for section A02: 3:00-4:30PM Wednesday, DCH Sym II Lab
- Laboratory for section A03: 4:00-5:30PM Monday, DCH Sym II Lab
- Alan L. Cox, email@example.com, DCH 3009, x5965
Office hours: 4:30-5:30PM Thursday and by appointment
- Michael Fagan, firstname.lastname@example.org, DCH 3098
Office hours: 4:45-5:45PM Wednesday and by appointment
- Melinda Crane, email@example.com, McMurtry Commons
Office hours: Monday 7:00-8:00PM
- Riley Gibson, Riley.D.Gibson@rice.edu, DCH 3036
Office hours: TBA
- Yizi Gu, Yizi.Gu@rice.edu, DCH 2070
Office hours: Wednesday 3:00-4:00PM
- Dhruv Madhok, firstname.lastname@example.org, Duncan Commons
Office hours: Tuesday 7:00-8:00PM
- Kyler Mejia, email@example.com, Martel Commons
Office hours: Sunday 8:00-10:00PM
- Visit Pataranutaporn, firstname.lastname@example.org, DCH 3002
Office hours: Wednesday 2:00-3:00PM
- Luke Samora, email@example.com, Sammy's Lounge @ the RMC
Office hours: Friday 4:00-5:00PM
- Susan Wen, firstname.lastname@example.org, Martel Commons
Office hours: Friday 2:00-3:00PM
- Yufeng Zhou, email@example.com, Jones Commons
Office hours: Tuesday 1:15-2:15PM, Friday 3:05-4:05PM
- Jiafan Zhu, Jiafan.Zhu@rice.edu, DCH 3003
Office hours: Monday 3:30-4:30PM
How to contact usPlease post your questions of a general nature to the course Piazza site. (Click here to join the site.)
Please e-mail your questions of an administrative (or private) nature to the staff mailing list: firstname.lastname@example.org.
Course DescriptionThe primary goal of this course is to expose you to the underlying aspects of computer systems that have an impact on application programming. The major topics of this course include linking, exceptions, memory allocation and management, networking, and concurrency. These topics are important in all computer systems and will prepare you for future courses in compilers, operating systems, computer architecture, and networking.
This course also introduces and uses the C programming language. C is generally considered a low-level programming language, because all of its features can be implemented in a fairly straightforward manner on typical modern processors. Moreover, C exposes the details of memory allocation and management to the programmer. Therefore, it is much easier to gain an in-depth understanding of computer systems, as they relate to programming, by writing applications in C. These lessons can prove invaluable when writing complicated applications in higher-level languages, and when writing tools or building systems that will be used by other programmers. More pragmatically, despite the benefits of higher-level languages, C is still one of the most widely used languages, so a familiarity with it is important.
PrerequisitesELEC 220 and COMP 215
Required:Randal E. Bryant and David R. O'Hallaron. Computer Systems: A Programmer's Perspective, Third Edition.
Suggested:David Griffiths and Dawn Griffiths. Head First C.
This is an introductory book that teaches C programming if you feel you need more material on C. If you are looking more for a reference book, there are some listed on the Related Links page.