Welcome Schedule Lab Hours Code Style Guide

Welcome to CSE 361S: Introduction to Systems Software, Fall 2021!

Instructor Teaching Assistants When & Where
James Orr
Office hours: Tuesday and Thursday 1:00-2:00pm in Urbauer 228


Ben Hammer (Head TA),
Katie Lund (Head TA),
Arko Chatterjee, Ned Seaman,
Evelyn Song, Zichen Wang
Lectures:
1:00pm-2:20pm OR 2:30pm-3:50pm
Monday / Wednesday
Lopata 101

Optional Recitation:
1:00pm-2:00pm Friday
Urbauer 214

Course Objectives (or, What You Will Learn)

In this class, we aim to demystify how computer system works, and approach it from the programmer's perspective. That is, as a programmer, what you need to know about how the underlying system / hardware works so that you can write correct / safe / efficient code. We will start out by learning how your program is transformed into machine-level instructions that your hardware understands, focusing on x86-64 architecture. Then we move onto what your compiler can do and cannot do for you. We will also learn how the hardware memory hierarchy works so that you know what to watch out for when you need to write high-performing code. We will also discuss various system-level facilities including linking, virtual memory, memory allocation, processes, and signal handling. These facilities often work in the background and makes writing programs much easier. We as programmers do not often think about them, but understanding how they work provides a holistic view of how the entire system works together to execute your program. Understanding these concepts will enable you to become a power programmer!

By the end of this class, you will not only understand how computer system works, you will also learn what to be mindful of in order to write correct and efficient code. As additional benefits, you will become proficient in programming tools such as text editors for coding, gdb for debugging, Makefile (compilation framework), git, and Linux command lines.


Piazza

piazza.com/wustl/fall2021/cse361/

All enrolled students will be automatically signed up for the Piazza site. Please register as soon as you get your invitation. All questions should be posted to Piazza. Questions of a personal nature can be submitted as a private message. All questions emailed directly to the instructors or the TAs will receive the response "Please repost to Piazza," where both the question and the answer will reach its full audience. It is in everyone's interest that we maintain this policy; this is absolutely the most effective way to communicate.


Course Description

Introduction to the hardware and software foundations of computer systems. This course provides a programmer's perspective of how computer systems execute programs, store information, and communicate. The course material aims to enables students to become more effective programmers, especially in dealing with issues of performance, portability and robustness. It also serves as a foundation for other system courses, such as compilers, networks, and operating systems, where a deeper understanding of systems-level issues is required. Topics covered include: machine-level code and its generation by optimizing compilers, performance evaluation and optimization, computer arithmetic, memory organization and management, and supporting concurrent computation.


Prerequisites

CSE 131 and CSE 132

Suggested prerequisite: Having CSE 332 helps, but it's not required. CSE 260 or something that makes you think a little bit about hardware may also help. There is no single class that will serve as the perfect prerequisite, but certainly having a few computer science classes under your belt will be a helpful preparation.


Required Text

Bryant and O'Hallaron, Computer Systems: A Programmer's Perspective, Third edition, Pearson, 2015.
(ISBN-10: 013409266X / ISBN-13: 978-0134092669)

Recommended Text: Kernighan & Ritchie, The C Programming Language, Second Edition, Prentice Hall, 1998.
(ISBN-10: 0131103628 / ISBN-13: 978-0131103627)


Other Material

Lecture notes, lab assignments, sample exams and their solutions will be posted on Piazza.


Grading Policy

Labs: 56% (Breakdown: 10/11/11/12/12)
Midterm: 20%
Final: 24%
Course Evaluation: 1% extra credit with 75+% participation

Late Policy

You have two-day grace period per project. It's automatically granted, so you don't even need to ask me or let me know that you want to use them. However, this also means that, beyond those two days, it will be very unlikely to get any more extension on the project.


Exams

The midterm exam will be conducted on Wednesday, October 27.
The final exam will be on Wednesday, Dec 22, 2021 from 1:00pm-3:00pm for the section that normally meets 1:00pm-2:20pm.
The final exam will be on Monday, Dec 20, 2021 from 3:30pm-5:30pm for the section that normally meets 2:30pm-3:50pm.
No alternate exam dates will be available.


Disability Resources

Students with disabilities or suspected disabilities are strongly encouraged to both bring any additional considerations to the attention of the instructor and make full use of the University's Disability Resource Center.


Academic Integrity

Short version: Do not cheat.
Medium version: Violations of the Student Academic Integrity Policy include, but are not limited to:
(0) Looking for solutions online, (1) Plagiarism, (2) Cheating on an Examination, (3) Copying Or Collaborating On Assignments Without Permission, (4) Fabrication Or Falsification Of Data Or Records, (5) Other Forms Of Deceit, Dishonesty, Or Inappropriate Conduct.
Long version: see the Undergraduate Student Academic Integrity Policy.


COVID-19 Health and Safety Protocols

Exceptions to course attendance policies, expectations, and requirements because of a COVID-19 diagnosis, symptoms consistent with COVID-19, or exposure to a person with a confirmed or suspected COVID-19 diagnosis that requires quarantine or isolation will be made in collaboration between the student and instructor. In these cases, please notify your instructor as soon as possible to discuss appropriate accommodations.

While on campus, it is imperative that students follow all public health guidelines established to reduce the risk of COVID-19 transmission within our community. The full set of University protocols can be found at https://covid19.wustl.edu/health-safety/. This includes: