mshah.ioCourse ScheduleCourse Information


CPSC 3230 Computer Systems

'No more magic' -- Your Instructor

Course Information

Course Staff (ULA/TF Teaching Assistants)

Our wonderful teaching fellows/undergratuate learning assistants/coordinators!

  1. (ULA) Inssia Ahmed - inssia.ahmed
  2. (ULA) George Holm - george.holm
  3. (ULA) David Dong - david.dong
  4. (ULA) Jewon Im - jewon.im
  5. (ULA) Sasha Spiegel - sasha.spiegel
  6. (Course Coordinator) Harry Jain - harry.jain
  7. (ULA) Nathan Abebe - nathan.abebe
  8. (ULA) Alexandru Sandulescu - alexandru.sandulescu
  9. (ULA) Anton Melnychuk - anton.melnychuk
  10. (Grader) Ayush Tibrewal - ayush.tibrewal
  11. (ULA) Aidan Gibson - aidan.gibson
  12. (TF) Katie Rimey - katie.rimey
  13. (ULA) Max Ohm - max.ohm
  14. (ULA) Tim Li - tim.li

Course Description

In short, we will be diving into many low level components of computer systems to think like a systems programmer. This course is very applied, meaning we will be writing code and understanding with great breadth and depth how computers work.

Registrar Description: Machine architecture and computer organization, systems programming in a high-level language, issues in operating systems, software engineering, prototyping in scripting languages.

Course Objectives

By the end of this course, you will:

  1. Navigate the operating system using a terminal
  2. Compile, debug, and execute source code, and describe each step of the process
  3. Write programs with dynamically allocated memory in the C language and explain the process
  4. Describe how hardware abstractions are used in conjunction with software to improve performance and vice versa
  5. Describe the difference between a process and a thread
  6. Implement common data structures in C in a systems context
  7. Investigate and write larger scale systems programming projects.

Course Prerequisites

The following prerequisites are expected to get the most out of this course:

  1. CPSC 2230 (Data Structures and Programming Techniques)
  2. (Unofficially-Mike says) You need to be willing to learn new tools, work in the terminal, and do the readings

Course Resources

The following resources have been vetted, and I recommend for mastery (while taking this course, and reviewing later on in your career). Note, I will also often provide readings that will be valuable for completing your assigned work.

  1. (Free- Online Edition) Dive Into Systems
  2. (Free - YouTube videos on C) C Programming primer
  3. (Free- Online Edition) The 'Comet' Book - Operating Systems in 3 Easy Pieces
  4. (Recommended Hard Copy) Computer Systems A Programmer's Perspective

Academic Integrity and Non-Discrimination


Students and instructors are to follow the University policies on these important issues.

  • Please see Yale College's Undergraduate Regulations and Academic Dishonesty
  • PSETs: The code you submit must be the result of your understanding of the problem. You may discuss concepts and approaches with other students, but you may not take any written or electronic records from such discussions (this includes discussions on Ed; such discussions are electronic records so you may not post code publicly there). Furthermore, you must engage in a full hour of mind-numbing activity such as watching back-to-back episodes of an inane sitcom before resuming work (this is Stan Eisenstat's 'Gilligan's Island rule'). Under no circumstances may you examine a copy of another student's code, nor may you provide a copy of your code to another student. You may use snippets of code you find online for a generic purpose (for example, for resizing a dynamically allocated array), but you must clearly indicate in your code which parts are derived from code you found online, and the bulk of your code must be your own. You may consult course staff for help writing and debugging, and you may use code examples from class or posted to a course website without attribution and without triggering the Gilligan's Island rule.
  • Exams:Each student must work individually
    • If you are caught cheating I have to report the violation. My official policy is you receive a 0 in the course. Always remember, if you use any external sources, you must cite them.

Late Assignment and Make-Up Policy

This semester we have a very simple 'make-up' policy. You turn the PSET in by the official deadline for a potential of up to 100%. If you submit the PSET up to 1-week late (7 days), you can get up to 90%. Consider this a generous policy that gives you flexibility and the 'right-to-disconnect' or otherwise gives you some flexibility to pursue something inspiring. Deadlines are important to be met, but otherwise you can still achieve 90% of the maximum PSET if you decide you need that flexibility. If you submit the PSET any time after 1 week, it is unfortunately a 0 -- please do not come to me 'after the fact' and ask for an extension.

Important Note: Course projects (or final examinations) however must be completed on time. Final course projects lose 10% per day that they are late. The reason for this policy for final projects, is because there is no time flexibility at the end of the semeter in which I must otherwise submit final grades (especially for graduating students

Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events (e.g. attending a conference like Grace Hopper, Tapia, Game Developers Conference, or otherwise presenting a research paper) may have the need for a make-up or flexibility in a deadline. You must contact me in advance of such events and provide materials documenting your participation (e.g. name in a conference program, registration, etc.), so that appropriate accommodations can be made if they are indeed an excused absence.

Note: Students who contact me after the event participation has taken place, are not elgible for extensions. The reason(s) for this is: 1.) It is not fair to expect me to accomadate your situation after it has happened. 2.) You need to learn communication skills (e.g. If you do not show up for work, you cannot ask your boss to forgive the absence after you come in the next day without telling them). 3.) Some students work multiple jobs, are caretakers, and have other sometimes invisible circumstances, and it is not fair to them for you to get an extension 'after the fact'.

Note: Previously I had used a '5 token' system (which no longer exists in favor of a better system) which allowed you up to 5-days of extensions. Instead a more equitable option, and to avoid issues of students guessing when to use tokens (or students e-mailing asking for more tokens, while others did not feel comfortable), I am giving everyone a 7-day window to submit PSETs with up to 90% credit on every PSET. Please keep in mind, I am still giving assignments with the expectation and duration that the PSETs can be completed by the first deadline otherwise.

Note: Generally speaking, I discourage and only under rare circumstances grant an 'incomplete'. Incompletes cannot be used to makeup or extend PSETs, that is not the right mechanism.

Occasionally, other life events and circumstances occur that were not planned. If this is the case, please e-mail me privately.

Accessibility

Part of what makes university unique, is our diverse cohort of students, faculty, and staff. In order to support this, the university is committed to providing equal access and support to all qualified studentsthrough the provision of reasonable accommodations so that each student may fully participate in the University experience.

  • Students with disabilities, especially those who need special accommodations for exams, should contact the instructor and the Student Accessibiilty Services (SAS) in the first week of the semester to work out a plan. It is the responsibility of the student to make sure that SAS and the teaching staff has plenty of advance notice to accommodate the student needs.

Attendance Policy

Students who do well in this course tend to show up to the course consistently, participate (virtually or in-person), start coursework the day it is assigned (pro tip: read the PSET at the least, the day it is released!), and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not completed during the specified duration are a zero.

Wellness Policy

While university can be difficult at times, please do take care of yourself. It is okay to seek help and take a break. Please communicate with your instructor, advisor, and officials at the university if you just need a mental break.

I personally remember how difficult university can be juggling myself multiple jobs, multiple clubs, and trying to learn. Do take your wellness seriously!

Please consider the following resources at Yale:

Assessment Rubrics

The grade system follows the University Grading System.

Please find below the grading distribution that will be used for this course to compute a weighted average for your final grade. You will find grades you earn through the semester on Canvas and your final grade in banner.

  • In-Class Activity and Belonging/Perspectives Activity: (5%)
  • PSET;       (70%)(Each equally weighted)
  • Two Exams;         (25%)(Each equally weighted)
  • Additional Course Policies

    The following course policies will apply this semester. Please take time to read over them prior to making requests:

    • Please do not ask me for an A on the first day of class (It happens enough I have a bullet point here).
    • Please do not ask me if I can raise your grade to the next level because you need it for X,Y,or Z reason -- you earn your grade. (It happens enough I have a bullet point here).
    • In the event of a sick/snow day (i.e. we miss a lab or in-class activity) the weight of each PSET increases (There may also be shuffling of course material if we are interrupted).
    • The expectation is that the PSET are fair but difficult, so you should start early!
    • Unfortunately, I cannot fairly make individual extensions for you (i.e. "special deals") -- your peers may also be making other personal sacrifices to complete work on time, and that is not fair to them.
    • Come speak to me about your wellness if something is otherwise impeding your progress so we can provide you available resources to succeed.
    • PSETs that do not compile/open receive no credit Simply put, programs that do not compile do not do anything.
    • There are no "re-grades" or points awarded one week after your grade is posted. "re-grades" may result in a higher, equal, or lower score.
    • Re-grades are done cautiously to correct any errors that may occur from the course staff.
    • Re-grades are not for "redoing PSETs", you have the opportunity to improve based on the feedback for your next PSET.
    • Re-grades are not elgible for resubmission (i.e. you cannot submit different code/PSET for a regrade).
    • There are no "re-grades" after the semester is over.
    • Do not ask multiple members of the course staff for "re-grades"
    • Anywhere on Earth (AOE) when used as a deadline, means the PSET is due on that day, where anywhere in the world it is still that day.
    • If you are currently waitlisted, you must submit your homework on time. That is the gamble! If you do not have Canvas access, you will submit by e-mail or other course mechanism (e.g. github).
    • There are no extra credit PSETs just for you. I reserve the right to add points to PSETs that do go above and beyond however. I reserve the right to give an extra credit PSET to the entire class, though this is highly unlikely.
    • I reserve the right to modify the grading scale in your favor if you show exemplary proficiency in any of the categories. I will never modify the scale to lower a students grade.
    • In class work cannot be made up at a later date unless otherwise arranged with the instructor well in advance.
    • Course work completed after the due date cannot be graded, as solutions may have been discussed (this includes if taking this course for an Incomplete).
    • Once again, "in-class" work must be completed in-class unless there is a documented emergency or you have prearranged with the instructor a make-up well in advance.
    • Lab time or in-class activities (where applicable for in-person courses) are meant for helping students with the lab/activity, not completing homework. I have to prioritize the lab/activity first, then can answer homework questions.
    • AI Policy: Generally speaking, do not use AI to shortcut to your learning and generate code for you. AI will probably be useful for searching for help, finding idioms, and asking potentially clarifying questions. AI however may be detrimental to your learning. Software engineers who are going to be successful, are those who are curious, and do not otherwise rely on AI tools to 'vibe code' their way to success. University is the time to make mistakes, get feedback, and otherwise build a strong foundation for your skills. AI tools for search still do not produce correct results -- question what is generated. My expectation is you will type out code, make some mistakes, and put thought into your work -- that is how you learn and grow for the long term. The hard part about programming is not writing code, it is thinking -- take the time in university to level up your thinking skills, the AI will always be there for you later.
    • Generally speaking I like Microsoft Teams for office hours, but do not use it for ad-hoc questions (use piazza, or e-mail if there is a more personal question).
    • (For in-class courses) No Facebook/social media, no cell phones. Not only does it distract you (the screen flickering or otherwise images/videos), it distracts others! Sit in the very back of the class if you must wander the internet. Laptops for browsing, searching for concepts, etc. is fine.
    • Everyone needs to come see me in office hours (or by appointment) at least one time during the semester to introduce yourself. The purpose is so that you:
    • Know where my office is (physical or virtual)
    • Get used to coming to office hours.
    • Let me know how I can help you achieve your goals.
    Please do not redistribute or host any materials without e-mailing me first. I generally am happy to share the latest .pdf or slide presentation with those who ask. Thank you for your time!