Instructor: Insup Lee lee@cis.upenn.edu Co-Instructor: Ivan Ruchkin iruchkin@cis.upenn.edu TAs:
Class TimesLectures:
Recitations:
Office hours:
PrerequisitesComputer systems and C: CIT 593 (Intro to Computer Systems) or a similar course/background Object orientation and Java: CIT 591 (Introduction to Software Development) or CIT 590 (Programming Languages and Techniques) or a similar course/background This course is currently only open to students in the MCIT program and assumes prior C knowledge (specifically, what is covered in CIT 593), but not C++. Students in other degree programs may add themselves to the CIS course waitlist but are unlikely to be admitted, as the course will likely fill with MCIT students. Course OverviewThis course is a continuation of CIT 593 and introduces students to fundamental concepts in computing systems. These concepts are divided into four parts. We will begin by expanding our model from a single process to a multiprocess machine and studying concurrent execution, which is ubiquitous in modern computing systems. The second part of the course focuses on resource management, including memory and storage, process scheduling, deadlock. The third part of the course further expands the model and considers how processes communicate across a network. The fourth part is advanced concepts such as HTTP and virtualization. The course interleaves systems concepts with practical learning of systems programming in C++ for Linux. You will learn template programming and libraries that programmers use for concurrency, input/output, and networking. This course will provide you the requisite knowledge and experience for systems-focused CIS electives such as CIS 505 Software Systems, CIS 548 Operating Systems Design and Implementation, and CIS 553 Networked Systems. After completing this course, you will have a better understanding of how systems (software, hardware, and networks) work together, and be able to:
TopicsThe course has two aspects: learning systems concepts and programming systems in C++. Systems topics:
C++ topics:
Assignments, Projects, Exams
All programming assignments will be developed and submitted via the Codio platform. The attendance of recitations and office hours is not graded, but highly encouraged to help you complete your assignments. Grading
Optional Course Textbooks
Collaboration PolicyWe encourage general discussion of the conceptual material, isolated technical questions, and non-homework exercises. This discussion can occur on Piazza (sign up via Canvas), during recitations, or through other channels. Team projects should only be discussed within your assigned teams; we intend roughly similar efforts from all team members. Lecture questions, homeworks, and exams are meant to be completed by you individually. Direct cooperation between a student and someone else (be it another student or a stranger on stackoverflow) on the answers to lecture questions, homework assignments, and exam questions constitutes plagiarism and is prohibited. Late PolicyNo extensions for lecture questions under any circumstances. The goal of the lecture questions is for you to engage with the material on that specific week. Occasional emergencies are already accounted for by the low grading weight of lecture questions. For homeworks and projects, the penalty is 10% of the assignment’s maximum grade for every 24 hours of being late. Extensions may be granted in special circumstances (contact the instructors). The exams are to be taken at specified times. Accommodation is available upon request. Other PoliciesTreat each other professionally and refer to the SEAS/University policies when in doubt. |