Section 1: MWF, 10:30am - 11:20am, Stuart Hall 101
Section 2: MWF, 11:30am - 12:20pm, Stuart Hall 101
For more details, go to: https://coursesearch.uchicago.edu (and type "CMSC 15400")
(The two instructors will co-teach the class, so you can join any of the sections).
This course covers the basics of computer systems from a programmer's perspective. Topics include data representation, machine language programming, exceptions, memory systems, and being the client of an operating system. Our goal is to help students be more effective programmers and to prepare students for advanced systems courses, such as architecture, compilers, operating systems, and networks.
The course involves homeworks, exams, labs, and programming projects. Proficiency in C programming is assumed, as per the course pre-requisites (CMSC 12200, 15200 or 16200).
This is a popular class with a strict enrollment limit. If you are not currently registered for the class we cannot make any assurances about being able to add it.
Computer Systems: A Programmer’s Perspective (3rd edition), by Randal E. Bryant and David R. O’Hallaron, published by Pearson, ISBN# 9780134092669.
Check our university bookstores, or
Order from Amazon the hardcover version: https://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X
Order from Amazon the paperback version: https://www.amazon.com/Computer-Systems-Programmers-Perspective-3/dp/9332573905/
Lecture and Texts
Please see the registrar website: https://registrar.uchicago.edu/classes and type "CMSC 15400", or visit http://course-info.cs.uchicago.edu/guava6/undergrad/index.html
Required: Computer Systems: A Programmer's Perspective by Bryant & O'Hallaron
The textbook is required to have. Without the textbook, you will not have enough background to complete the homeworks and projects.
You are responsible for reviewing the book's ERRATA
See the student site for the book. It has useful things like Unix/C tutorials, GDB tutorials and quick references, and IA32 and X86-64 documentation
Recommended: Either The C Programming Language, 2nd Edition, by Brian W. Kernighan and Dennis M. Ritchie, or: C, A Reference Manual, 5th Edition, by Samuel P. Harbison III and Guy L. Steele, Jr.
Assignments:
Please check the homeworks, projects, and labs (The "All Links" page is also available in the left bar)
All assignment (homework and project) due dates are in the class calendar
Homeworks and projects are completed and submitted individually, by 11:59pm on the deadline.
How to submit homework and project: We use SVN (not github). Please use: https://canvas.uchicago.edu/courses/44760/files/folder/HowTo?preview=7916538.
Grading weights (100% total):
Homeworks: 8 homework assignments * 2.5% each, for a total of 20%
The lowest homework grade will be automatically upgraded to a full 2.5%. Hence, there is no extension will be given for homeworks.
Projects: 4 projects * 10% each, for a total of 40%
Projects are completed and submitted individually. No partnership is allowed.
We already reduce the projects significantly from the previous years, hence we will not approve any extension in any circumstances, except if you have family or medical emergencies.
Exams (non-cumulative): 2 exams * 20% each, for a total of 40%
Communication and Resources
Ed discussion: All questions should be posted on Ed discussion (not emails). If you want to post a private post to the instructor, *never* use instructor's name/email as the post recipient, instead you should designate the post to "Instructors" (which include the instructors and the TAs). The instructors do not always check Ed, but the TAs check it every hour.
CSIL: The CSIL linux machines are the only machines that we support for doing cs154 course work. We can't commit time to helping get cs154 code to compile on another platform.
Office Hours: Please see the "All Links" page.
Academic honesty policy
It is very important that you read the academic honesty policy carefully.
Please go to this link: Honesty Policy
154 Course FAQs
Our current registration staff person is: Jessica Garza <jdgarza@uchicago.edu>. Whenever we mention "contact the registration staff person," it means you should email Jessica to get the anwer.
I haven't taken all the pre-reqs, can I enroll in 154?
Most likely no, unless the class is not full (rarely happen). Double check with the registration staff person.
Can you sign my pink slip?
If you are a CS major --> Go to or email our registration staff (see the staff name and email above). They will tell you that you need a permission and where you will get it from. After you get the permission, please forward the email to us and the registration staff, and we will also approve it and the registration staff will add you into the class.
If you are a CS minor --> Same as above, but for this, you need a permission from someone who is in charge of CS minors. Again, the registration staff person will help you.
If you are not a CS major/minor --> You simply need a permission from us. Tell us (all the instructors) why you think you this class fits you.
For everything else, ask our registration staff.
In general, whenever you have a question regarding registration, please talk to our registration staff person. They will either answer your question or route you to the right person.
I cannot get in to 154, what should I do?
See above question. In general:
- Go to the waiting list: https://waitlist.cs.uchicago.edu/
- If you have any questions or troubles about the waiting list, please go to registration staff.
Note that the instructors cannot add you directly to the class. Everything must go through the normal procedure as set by the department.
How is the course arranged this year?
Like past years, in terms of teaching the materials, the two professors will do a vertical division. That is, we divide the teaching by content, not by section#. For example, Prof. X will teach OS lectures in all sections, and Prof. Y will teach assembly. We decide who teaches what based on the expertise of the instructor. We do this for the benefits of the students. All sections will get the same homeworks, projects, and exams.
Does it matter which lecture section I’m registered in? (not applicable for Spring 2020, remote teaching)
In terms of what you learn from whom, no. You should come to the lecture section for which you’re registered, because the class is going to be at or near the enrollment capacity determined by the lecture room size, and we owe it to students registered for a lecture section that they can reliably get a seat in it.
Can you describe more about the labs?
Lab assignments are optional. If you feel you can do the lab assignments by yourself, feel free to do so. Lab assignments are not graded. But remember the lab materials very important to the success of your project. Don't assume you can do the projects without doing the labs. If you have questions about the labs, go to the TA office hours.
I am having difficulty getting a lab section that works with my class schedule. What should I do?
Labs are optional, so starting in Spring 2021, there should no be lab slots.
For labs, you need to attend the lab# you are registered to. If there is a scheduling conflict, you should try many times to register to another lab (some students might have dropped the class). However, if other labs are continuously full, then you need to do lab swap. Specifically, you need to (1) see/email the registration staff who will handle the changes in lab (“activity”) registration with the registrar, (2) tell the registration staff all the detailed information about you including your name, majors, minors, standing (senior/junior/sophomore), and all possible lab sections that work with your schedule, (3) do all of these preferably before 5pm on the first day of class, but the earlier the better, and (4) wait for an email in the next couple of days. There is no guarantee that you will get a lab. If you cannot be added to a lab that works for your schedule, then unfortunately you can’t take the class.
Can I audit the class?
Thank you for your interest in 154. The class management for 154 is already complex. It is hard for us to manage special audit/late-add requests. Furthermore, the lecture room space is too small for this, and many electronic resources are created and managed based on information from the registrar. We will have to focus our efforts and resources for the registered students.
I always attend the lectures, do I need to read the textbook?
The textbook does a great job of explaining the detailed technical information that it covers. Reading the textbook is essential for learning the material. We want to use lectures to connect that technical information to a bigger picture. This is a hard class. There is a lot of diverse material, tested with homeworks and exams on the “book learning” side, and labs and programming projects on the “hands-on” side.
I have some questions about homeworks/projects. What should I do?
This is the most important question of the course. You can do several things:
1. Post a message in Ed discussion. There should be a TA who will respond to your question before midnight (or within 24 hours).
2. Go to the TA office hours. There will be TA office hours almost every day! To see the TA office hours, please go to the course main page. If the TA cannot solve your problem during his/her office hour, it’s the responsibility of the TA to follow up with you outside the office hour (so please keep reminding the TA to continue helping you).
Please note that for project/homework questions, you should *not* send individual emails to the faculty or the TAs. If you do so, we will lose track, and there is no guarantee that we will help you. The methods above are the only means to get help. If you find a TA who is not being helpful, please let the faculty know.
On what type of computer/OS should I execute my project?
The CSIL linux machines are the only machines that we support for doing cs154 course work. We can't commit time to helping get cs154 code to compile on another platform.
If your code compiles on your laptop and OS but fails to compile on the CSIL machine, you will get a 0 on the project.
How to Work on Projects / Labs?
The preferred method: directly work on your programming tasks on uchicago CS machines through ssh or remote desktop connection.
Alternative Method 1: Write your code on your local machine, push to SVN, then login to CSIL machine and and compile/debug your program. If you do this way, it is your responsibility to install SVN in your own machine (by googling for the instruction). We do not provide support to install SVN in your computer.
Implement, compile, and debug your code in your own computer. Similar as above, it is your responsibility to make sure you have the necessary compilers to compile your C programs. We do not provide support on installing C compilers/development platforms on your computer. When you think your code compiles and runs fine on your computer, you can push the code via SVN, log in to CSIL machine and try re-compling and re-running the code again and make sure you get the desired output.
The TA cannot help me with my project problem? What should I do?
In solving a project problem, you and the TA are a team. You should not come to the TA saying “my code doesn’t work, and I don’t know why.” Before going to the TA, you must make effort in guessing what the problem is. Then you can ask the TA for help. This way you can give the TA detailed information or your assumptions for why your code doesn’t work. You also should not just say “I don’t know what to do next”. You need to provide the TA some background on your progress status. Again, you and the TA are a team, you should provide the TA with as much information as you can so the TA can help you better. But if a TA at the end cannot help you after hours of debugging, it is likely the case that your design is way off too much from the right path, which means you need to rethink again your whole approach. The TA will redirect you to the right design.
I’m in panic because the project/HW deadline is in less than 24 hours, but I’m not getting enough help from the TAs.
The TAs will try their best to help you. But it is your responsibility to START EARLY! If you don’t start early and you get lots of problems near the deadline, there is a possibility that the TAs won’t be able to help you. Diagnosing and fixing a problem requires time. We expect to have lots of traffic near the deadlines and thus we will pour lots of TA supports near the deadlines, but again please start early to make sure you get enough help.
I am a helpful person, I like to help others. Can I answer someone else' questions on Ed discussion?
Yes, you may help, but you shouldn't give a direct answer or you will be penalized. For example, if it's a homework question, you shouldn't provide your answer. If it's a project question, you shouldn't provide a code snippet of your solution.
Do I get a partner for projects?
No, each project should be done individually. CS 154 projects are not easily partitionable. Yes, you may help others, but you shouldn't give a direct answer or you will be penalized. For example, if it's a homework question, you shouldn't provide your answer. If it's a project question, you shouldn't provide a code snippet of your solution. To know what is and is not permissible, please see the honesty policy page.
I get a 0 for my project, why is that?
If you get a 0, but you expect a positive score, first of all, do NOT panic. Most likely it is because you submit code that fail to compile. It is your duty to submit code without any compile errors. We have little tolerance on this because it is something that you can double check before you commit. Always run "svn st" to check the status of your commit. If you think this is a compile error/misgrading, just kindly reach out to the TA to reconcile the problem.
I get a 0 for my HW, why is that?
Most likely because you didn't submit the right filename or file format, or the filename and file format is correct but the content is not readable, e.g. you rename .docx to .pdf (you forgot that it should be print .docx to .pdf). We have ZERO tolerance on this because it is something that you can double check before you commit. Again, always run "svn st" to check the status of your commit. A good habit to always double and triple check.
I am a registered student at the Student Disability Services (SDS), can you let me know how my exams will be arranged?
For students who are registered with the Student Disability Services (SDS), if you need special accommodation for exams (or the class in general), please (1) ask the SDS office to send us emails stating that you're registered at SDS, (2) tell the SDS office that the instructor will provide special arrangement for you, i.e. the SDS office does not need to proctor the exam, and then (3) email all the instructors and TA #1 -- the TA for Project #1 (in one email) and let us know your needs (e.g. 1.5x exam time, laptop access for typing, smaller/silent room) and we will accommodate that, and (4) most importantly email the instructors and TA #1 again one week before the exam to get the final information about the logistics. (5) If you need extra time, you need to let us know (in the same email above) whether you are available 1 hour before or after the exam. (6) If by 2 days before the exam, you haven't received an email about the your arrangement (e.g., location of the special room reserved for you), please email us ASAP.
Please use email title "154 special accommodation [your UCNetID]". For exams, we prefer you to be proctored by our TAs (rather than doing it in the SDS office). This way you can ask questions to us during the exam. Hence, you do not need to put a request to SDS to be proctored there, you just need to ask SDS to send us an email stating that you are registered at SDS. We will handle the exam logistics our own way.
I have to leave before the quarter ends (e.g. for internships, or other important travels), how does this impact the final project and final exam?
As this is a big class, we cannot make a special exception for cases like this. It is your responsibility to be here during the final exam day. You might need to speak to your internship advisor to get a day off to fly back here on the final exam date [for example, you tell your advisors that you will work on one weekend to replace this one-day off]. Note that we already move up the exam before the final exam week. We cannot make special exception to move this up further. In the cases of family/medical emergencies, you must email your university advisor and cc us.
I have two exams on the same day, can I reschedule my 154 exam?
Unfortunately no. Same as above, as we're dealing with a big class, it's hard to accommodate a special circumstance like this. We might give exception if you have three exams on the same day, although it is unlikely as our exam days are not in the exam week. If your other exam conflicts with 154 exam hours, please ask the instructor of your other class if they can do a different time.
I'm sick and I miss the exam, what should I do?
Email your university advisor and cc us (all the 154 instructors) that you missed the exam due to sickness. We will follow up from there.
Can I ask the TA to schedule additional office hours?
Before you do that, remember that we have non-overlapping TA office hours every week. It would be hard to have the TAs schedule additional office hours.
I have to leave before the quarter ends (e.g. for internships, or other important travels), how does this impact the final project?
To get help for your last project, the only help you can get is via Ed discussion. Of course you can also Skype the TA during the TA office hours. We leave the arrangement between you and the TA. We will not be able to give you a deadline extension (e.g. say you cannot find time to do the last project and need more time). It is important to provision 20-30 hours for the last project.
Some projects require access via campus, but I'll be mostly out of town, how can I get campus access?
You should use Cisco AnyConnect to use CSIL computer from the off-campus network. The detail is here https://dataguide.uchicago.edu/cvpn-cisco-anyconnect . You can come to the TA office hour and we can help you to set up the cVPN.
Why do I get an F in this course? Why my project scores are reset to zero?
It is likely that you perform an academic misconduct. To make sure how severe this problem can be, please click here to read our academic honesty policy. It is very important.
What is your Pass/Fail/Withdraw/Incomplete policy?
Please read the information in this link carefully: http://collegecatalog.uchicago.edu/thecollege/takingcourses/ As stated, it is your responsibility to discuss with your advisor your intention to get a non-regular letter grade.
For CS majors/minors, it’s departmental policy that courses taken for P/F cannot be counted towards majors or minors. Students pursuing either a major or minor must take all courses counting towards their degree for quality grades.
After you get approval from your advisor, please inform us by directly emailing both of the instructors.
I have been issues with the class (e.g. missing many homework and project deadlines), and now is the middle of the quarter and I am wondering if I can catch up to get a quality grade?
By the mid quarter, we will release your overall grade file where you can see how many total points you have collected. By the end of the quarter you need at least 55 points to guarantee a quality letter grade (i.e. at least a C-). Every quarter is different. Some quarters (rarely), a few students still get a C- even when their total scores were between 50 and 55. But again, every quarter is unique. It is safe to say though that if you get at least 55 points total at the end (out of the maximum 100 points), you will get a quality grade. You need to decide yourself whether you have a chance to reach 55. One important note: we do not provide exceptions. As we mentioned earlier in the class, students have many chances to improve their grades (8 projects, 4 homeworks, and 2 exams). We unfortunately don't give make-up assignments.
Can I take an Incomplete (I) ?
No unfortunately we don't because the TAs that we have in the quarter might not be available during the breaks and no longer around next quarter to grade your assignments. Fortunately, CS 154 is offered every quarter now. You can withdraw the class this quarter and re-take it next quarter.
Do you know about P/F or grade requirements for CS majors or minors?
Unfortunately we don't. For this, please consult the designated person in the department who can help you with the answer.