Course Info

Description

The purpose of this course is to provide a solid understanding of how computer systems execute programs, store information, and communicate. We will explore systems-level issues from a programmer's view by examining the abstractions, interfaces, and design decisions that influence the way that software runs on the computer system. The perspective we will take is one of the life cycle of a program from implementation to execution. The act of compiling and running a program, a sequence of events we often take for granted, is a complex interaction of many different components that work together to manage the computer’s resources and perform the desired task.

Prerequisites

Before enrolling in this course, you need to have completed CS 0441 – Discrete Structures for Computer Science, CS 0445 – Data Structures, and have completed or be currently enrolled in CS 0447 – Computer Organization and Assembly Language Programming.

Instructor

Office Hours

Time & Location

    • Class 18313 (1110) - MW 11:00 am - 12:15 pm @ SENSQ 5502

    • Class 23775 (1135) - MW 3:00 pm - 4:15 pm @ SENSQ 5502

    • Class 27068 (1150) - TuTh 2:30 pm - 3:45 pm @ IS 405

Teaching Assistants

  • Chris Hinson (chh183)

    • Office hours: Sennott Square 5806 - Mondays: 12:30PM - 2PM Wednesdays: 12:30PM - 2PM Thursdays: 2:30PM - 4PM

  • Nannan Wen (naw66)

    • Office hours: Sennott Square 6508 - Th: 1:00 – 4:00 and F: 2:00 – 3:00

TA and myself will be available during posted office hours (and by request, otherwise) to provide assistance. Your TA is your first source of information. I ask that you first contact your TA with your questions, particularly regarding the lab assignments.

Recitations Schedule

  • Class 18313 (1110)

    • F 10:00 am - 10:50 am SENSQ 5505

    • F 2:00 pm - 2:50 pm SENSQ 5505

    • F 3:00 pm - 3:50 pm SENSQ 5505

  • Class 23775 (1135)

    • F 9:00 am - 9:50 am SENSQ 5505 with Nannan Wen

      • Zoom Meeting ID: 981 2962 2876, Passcode: check Canvas announcement

    • F 11:00 am - 11:50 am SENSQ 5505

    • F 1:00 pm - 1:50 pm SENSQ 5505

  • Class 27068 (1150)

Booking TA Office Hours

  • TDB

Course Overview

Attendance is not mandatory. However, you are responsible for attending lectures and recitations to receive any guidance or hints given generally to the class (even if they do not get posted). There will be participation points (part of your overall grade) for those who come to class and participate.

Lectures will cover higher-level concepts, while recitations will be more applied, covering lab material, practice problems and important “hands-on” activities, especially exploring the tools that will help you do the labs. Recitations will also help clarify lecture topics and discuss exam coverage.

Textbooks

Topics covered

    • Data representation/manipulation

    • System-level Programming (C)

    • Machine-level representation (x86)

    • Memory organization/management

    • Exceptions and Processes

Learning Objectives

Upon completion of this course the student should be able to:

  • Explain common bit-level representations of numeric values (unsigned, two’s complement, floating point) and the bit-level operations on them.

  • Identify the relation between programs written in C and in assembly code, including the implementation of expressions, control, procedures, and data structures.

  • Demonstrate ability to a program through its binary representation and apply these skills to debugging programs.

  • Investigate the programmer’s interaction with the underlying system through the different interfaces and abstractions, including system support for process and thread control, virtual memory, and communication.

Grading

The grade distribution is:

    • 10% Homework

    • 20% Midterm Exam

    • 20% Final Exam

    • 50% Programming Labs

Scaling Grade

Grades for the course will be reported according to the following scale:

A+: 100% to 97%

A: < 97% to 94%

A-: < 94% to 90%

B+: < 90% to 87%

B: < 87% to 84%

B-: < 84% to 80%

C+: < 80% to 77%

C: < 77% to 74%

C-: < 74% to 70%

D+: < 70% to 67%

D: < 67% to 64%

D-: < 64% to 60%

F: < 60% to 0%

Homework

The purpose of the homework assignments is to give you practice with the theoretical material of the course. Spending time on the homework pays off on the exams. The homework is to be completed individually, but you can discuss the questions (not solutions!) with your peers. We will be using Gradescope for the homework assignments. Note there are NO late days for homework assignments nor regrade requests. You need to keep track of the release and due dates on Gradescope.

Exams

There will be one midterm and one final exam with questions to test your understanding of the topics covered in lecture material and lab assignments. The exams will be open-course material since we would like to test your reasoning ability, not memorization. The final exam will take place in the ordinary final slot provided by Pitt, which hasn't been finalized for this semester yet. The exam is an individual effort. No collaboration of any form is allowed on exams. Students must not discuss any aspect of any exam question with someone who has not yet taken the exam.

Exam regrades: Requests are made via Gradescope. Submit separate regrade requests for each subquestion. Each regrade box is for only that particular part of the exam. Regrade requests will typically be closed a few days after grades are released.

Programming Labs

Programming lab assignments are the fundamental piece of this course and will be conducted during recitations. Lab assignments will be turned in electronically and will be graded mostly automatically (see Labs). In addition to the lab material, weekly short quizzes may also be given with practice problems. It is worth noting that much of what you learn in this course will be through completing these assignments.

Lab regrades: Send an email to the TA/grader and CC the instructor. Include a written summary describing why your work should be looked at again. Regrade requests should be submitted within a week of when the lab was graded.

Checkoff meetings

Checkoff meetings are required for all the programming labs and are designed to assess the understanding of your code. These are short meetings (about 10 minutes long) with the course staff (see next section for details on booking the meeting). You need to complete the checkoff meeting after submitting your lab solution and no later than 10 days after the lab's due date. You must complete the checkoff meeting in order to receive any credit for a lab. Note that using late days on the lab due date does not extend your checkoff due date. You must sign up for a scheduled checkoff slot with a grader/TA. During the checkoff meeting you'll be asked a few questions about your design, so please refresh your understanding of what you did before your checkoff. You will be asked to explain your code using only what you have submitted: your comments in the code should be such that you can determine what your code does and why. If you do not pass your first checkoff, you will need to wait at least 24 hours before being able to try to checkoff again. Second and final checkoff meeting must be with one of the course instructors. Note that your checkoff freezes your grade -- any changes to your submission that improves your grade will require another checkoff meeting.

Booking a checkoff meeting

Academic Integrity

Please read this carefully!

Students in this course will be expected to comply with the University of Pittsburgh’s Policy on Academic Integrity. Any student suspected of violating this obligation for any reason during the semester will be required to participate in the procedural process, initiated at the instructor level, as outlined in the University Guidelines on Academic Integrity. This may include, but is not limited to, the confiscation of the examination of any individual suspected of violating University Policy. Furthermore, no student may bring any unauthorized materials to an exam, including dictionaries and programmable calculators.

To learn more about Academic Integrity, visit the Academic Integrity Guide for an overview of the topic. For hands- on practice, complete the Understanding and Avoiding Plagiarism tutorial.

In the course, each exam and lab assignment must be individual work. Assignments will be checked by automatic plagiarism detectors, and students may be asked to explain any suspicious similarities. All incidences of cheating will be reported to the Dean’s office. The default penalty for cheating is to be removed from the course with a failing grade. While lesser penalties may occur, depending on the circumstances, the penalty will always be worse than if you had not turned in the assignment at all.

Pay attention to the following examples of cheating, which include:

    • Sharing code: either by copying, retyping, looking at, or supplying a copy of a file from this or a previous semester.

    • Describing code: Verbal description of code from one person to another.

    • Coaching: Helping your friend to write a lab, line by line.

    • Copying: Copying code from the Web or another student. You are only allowed to use code that we provide you.

    • Searching: Searching the Web for solutions or for any advice on the lab.

Cheating is also looking at other students’ code or allowing others to look at yours. This includes one person looking at code and describing it to another. Be sure to store your work in protected directories, and log off when you leave a remove server, to prevent others from copying your work without your explicit assistance.

You may find it useful to know what is not cheating:

    • Clarifying ambiguities or vague points in class handouts, lectures, or textbooks.

    • Helping others use the computer systems, networks, compilers, debuggers, profilers, or other system facilities.

    • Helping others with high-level design issues only, but algorithm/coding and other such details are not ”high-level design issues”.

    • Helping others with high-level (not code-based) debugging.

    • Using code from the skeleton/package provided in class is always OK.

Late submissions

Students must submit assessed assignments by the published deadline. The penalty for late assignments is 10% per day. However, each student will receive 5 late days for the course. These late days are provided to allow you to cope with most emergencies that prevent completing a lab on time, including computer problems, a cold, getting stuck at the airport, etc. The following rules will be applied for late days:

    • Late days are used automatically until you run out.

    • No more than 2 late days can be used on any one assignment.

    • If your last submission is one day late, and you have at least one remaining late day, then you will receive full credit for the lab and automatically spend one late day. For example, if an assignment is due at 11:59pm on Thursday and your last submission is noon on Friday, then you will receive full credit and spend one late day.

    • Once you have used all your late days, or exhausted the limit for the assignment in question, then you will receive a penalty of 10% for each subsequent late day. For example, suppose you have only one late day left. If an assignment is due at 11:59pm on Thursday and your last submission is noon on Saturday, then you will spend your one remaining late day and be penalized 10%. If your last submission is noon on Sunday, then you will spend one late day and be penalized 20%.

    • Late submissions will not be accepted after three days after the due date.

It is worth noting that those late days to help you manage your time in the face of personal issues and to help smooth out burstiness in assignment due dates across classes. They are for when you are sick, when a short term emergency situation arises, when you have too many deadlines all at once, etc. It is strongly recommended that you conserve your late days, saving them for the more difficult assignments at the end of the term.

You are expected to plan your time well including contingency time. For example, if you expect a piece of work to take two days, you should begin it more than two days before its deadline. Please DO NOT ask the course lecturer for an extension. Except for serious persistent personal issues, you should not anticipate additional deadline leniency. If you have a serious persistent personal issue, such as being hospitalized for an extended period or needing to leave the country for a family matter, please talk to your academic advisor as soon as possible. You should always inform your academic advisor of any circumstance that seriously affects your work.

Disability Services

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your instructor and Disability Resources and Services (DRS), 140 William Pitt Union, (412) 648-7890, drsrecep@pitt.edu, (412) 228-5347 for P3 ASL users, as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course.

Your Well-being Matters

College/Graduate school can be an exciting and challenging time for students. Taking time to care for yourself and seeking appropriate support can help you achieve your academic and professional goals. You are encouraged to maintain a healthy lifestyle by eating a balanced diet, exercising regularly, avoiding drugs and alcohol, getting enough sleep, and taking time to relax.

It can be helpful to remember that we all benefit from assistance and guidance at times, and there are many resources available to support your well-being while you are at Pitt. If you or anyone you know experiences overwhelming academic stress, persistent difficult feelings and/or challenging life events, you are strongly encouraged to seek support. In addition to reaching out to friends and loved ones, consider connecting with a faculty member you trust for assistance connecting to helpful resources. The University Counseling Center is also here for you. You can call 412-648-7930 at any time to connect with a clinician.

If you or someone you know is feeling suicidal, please call the University Counseling Center at any time at 412-648-7930. You can also contact Resolve Crisis Network at 888-796-8226. If the situation is life threatening, call Pitt Police at 412-624-2121 or dial 911.

Statement on Classroom Recording

To ensure the free and open discussion of ideas, students may not record classroom lectures, discussion and/or activities without the advance written permission of the instructor, and any such recording properly approved in advance can be used solely for the student’s own private use.