CIT 5950 (Spring 2024) Home Schedule Assignments Tools & Refs Syllabus

Disclaimer

Table of Contents

Overview

Prerequisites

This course is currently only open to students in the MCIT program and assumes prior C knowledge (specifically, what is covered in CIT 5930), but not C++. This includes:

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. Note that students who have not taken CIT 5930 or an equivalent course have very little, if any, chance of being admitted.

Course Description

In CIT 5930, you learned some fundamentals of how computers work, starting with transistors, going through assembly, briefly discussion the idea of the Operating System and then ending with the low level programming language of C. In this course, we plan to start from your experience in C, explore how real programs interact with a modern operating system, and deal with the idea of having multiple programs interact with each other or shared resources. Additionally, we will go over the workings of higher level programing language features through C++.

More directly speaking, we plan to go over the following topics:

This course will provide you the requisite knowledge and experience for systems-focused CIS electives such as CIS 5050 Software Systems, CIS 5480 Operating Systems Design and Implementation, and CIS 5530 Networked Systems. After completing this course, you will have a better understanding of how systems (software, hardware, and networks) work together. This course aims to be useful to both students who continue down the path of systems, and those who specialize in other topics.

Course Materials

Docker & Speclab

Docker and speclab are the two development enviroments supported by the course. We will not give advice on how to support alternatives unless one cannot get docker or speclab to work.

Docker is the recommended place for developing and testing your programming projects. The environment you will use in Docker will be the same as the environment we grade projects in. Instructions will be posted on Ed shortly into the semester directing you how to setup the docker environment.

You can find the instructions for setting up your docker environment here: Docker Setup

If docker does not work, this is what we recommend to use for developing and testing your programming projects. Instructions for using speclab can be found here: https://cets.seas.upenn.edu/answers/speclab.html. Note that you do not need to install Docker on speclab, speclab is already a linux session that you can develop in.

Website

The website acts as the central place for organizing material for the course. All essential material for the course is delivered through or linked through the course website. As an example, the website contains the course schedule, lecture materials, recitation materials, homework specifications, and this syllabus. We highly encourage you to explore, try some of the resources that are available, and become familiar with the site early on in the course.

Canvas

The canvas site contains the gradebook, surveys, and the check-in quizzes. You are free to use the canvas if you want, but if there is anything that is needed on canvas, it will be directly linked on the course website.

Ed Discussion Board

The Ed Discussion board provides a place for students to get support from course staff. Ed is also the primary mechanism for announcements, though we will try to repeat announcements at the beginning of recitation and lecture for convenience.

OHQ

The course has an OHQ that we will be using for virtual office hours. Please write at least a somewhat detailed explanation of your question/problem and what you have tried so far to fix it.

Textbook

There are no strictly required texts for this course, however, some find it helpful to read the course material from a textbook. Note that none of the textbooks listed will have everything used in this course. As a result, we are suggesting the following texts:

Course Components

Lectures

There are approximately 28 lectures throughout the semester, which occur from 10:15 AM to 11:45 AM on Mondays and Wednesdays. Attendance is not mandatory, but highly encouraged since it is easier to ask questions and participate in in-lecture activities.

Recitations

The TA’s will hold weekly recitations throughout the semester. While these are not required, feedback from last spring suggests that students who attend can find these “incredibly helpful” or “life-saving”, though your experience may vary. In these recitations, TAs will often go over course material covered in the last week and/or help students with getting started on the upcoming homework. Recitations will also be a great opportunity for you to ask questions about course topics and homework assignments. Recordings will be made available for those who cannot attend.

Homework Assignments

Homework will be distributed, through Codio and the course website, but will be graded, and submitted through the course gradescope. There will be approximately 5 homework assignments spread out through the semester, typically with an assignment due every two or three weeks.

Late submissions and the opportunity to fix assignments will be possible. More information can be found in the assignment policies section here

Check-in Quizzes

These will be “open-book quizzes” on canvas that will be due before the first lecture of the week. These assignments will have unlimited submissions, so you can resubmit as many times as you wish. Some weeks will not have such an assignment, details can be found on the course calendar. The lowest two quiz scores will be dropped.

Final Project

There will be a final project where you will combine the information used throughout the course. As of now, the project can be done either alone or in pairs. Like the homeworks, the project will start by having you implement a specified program, but afterwards, you will add on extra features. These features can be proposed to course staff or selected from a list.

Note that details on the project are subject to change and more information will be released closer to the middle of the semester.

Exams

Exams will be graded by the course staff and will be posted to gradescope. As of now, these are planned to be taken in-person. More information concerning how the exam is conducted will come as the exam approaches.

Policies

Getting Help

It is very important to us that you succeed in CIT 5950. As a result, we are providing many resources to help you succeed. These include:

Please do not be afraid to ask for help if you don’t understand something. We are here to help you succeed. Additionally, some of the course staff will get lonely and bored if no one shows up to their office hours.

It is also very important to us that you maintain your mental wellness throughout the course. A few points are not worth losing sleep over. Everyone on the course staff is available to chat, and you can always attend office hours for a non-academic conversation if necessary.

Additionally, if you are experiencing some unforeseen and extenuating circumstances, please feel free to reach out to course staff for help. Notably, we are still in a global pandemic! Hopefully the pandemic is winding down for everyone, but we know things can come up in the middle of the quarter (whether it is related to the pandemic or not), and we are here to help.

Inclusion

You have a right to a learning environment that feels safe, where you are treated with respect and feel that you can contribute ideas constructively. Put another way, you have the right to an inclusive learning environment.

We want every student to feel that they have a safe and healthy learning environment, and if at any point you feel like this is not the case in any way, please let course staff know and we will see what we can do to help.

You can contact staff by making a private post on Ed, reaching out to course staff via email, talking to course staff at office hours, or scheduling a 1-on-1 with the instructor here: https://www.cis.upenn.edu/~tqmcgaha/#meetings

Disability Services

The Student Disability Services (SDS) is a unit within the Weingarten Learning Resources Center (WLRC) dedicated to ensure equal access to all University programs, activities and services. They offer a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff. Please submit a request if you will have a medical need for extensions of exam times or assignment deadlines.

Grading Breakdown

Assessment Policies

Late Policy

For exams, lecture polls and weekly check-ins, no late submissions will be accepted, or extensions granted, except outside of special circumstances.

For Homework assignments, there are no late penalties or late submissions. Instead, homeworks will have an assigned due date and the ability to request for an extension. Extensions requests must be made by making a private (but NOT anonymous) post to the Ed discussion board, where you must detail:

Your post will be reviewed by a course staff member and we will let you know if we grant the request. Note that we are lenient and will likely grant most requests, and it doesn’t hurt to ask.

It is also worth noting a few things about the system:

Midterm Clobber Policy

The clobber policy allows you to demonstrate mastery of past material with regard to exams. In particular, you can replace your midterm exam score with the score of the midterm section of the final exam. This does not apply in reverse, we will not replace your midterm section of the final with your midterm exam score.

To accommodate for the midterm subsection of the final exam being harder/easier than the midterm exam itself, we have a formula that accounts for average and standard deviation.

  1. First, we calculate Potential Midterm Clobber Score with: (final_midterm_subscore - final_midterm_mean) / final_midterm_std_deviation * midterm_std_deviation + midterm_mean, capped at 100
  2. Then we take the maximum score between the calculated potential clobber score and the grade you had on the midterm. The higher of the two will be used to calculate your final grade.

Rescheduling Exams

If you know in advance that you will be unable to take an exam, please discuss it with the instructor as soon as possible, at least a day before the exam so that the reason can be verified and plans can be put in place. Make-up exams would likely take place after the initial exam.

For emergency absences, please reach out to the instructor when possible so that plans can be put in place.

Policies regarding absences for the Final Exam are covered by the University Provost; for Spring semester courses, a makeup Final Exam would be scheduled at the start of the following Fall semester. Requests for a makeup Final Exam due to reasons that could reasonably be anticipated (e.g. traveling for summer break) are unlikely to be approved.

Collaboration & Academic Misconduct

In general, we encourage collaboration, but there is a very fine line between collaboration and cheating. We can learn a lot from working with each other and it can make the course more fun, but we also want to ensure that every student can get the maximum benefit from the material this course has to offer. Keep in mind that the overall goal is for YOU to learn the material so you will be prepared for the exams and for job interviews etc. in the future. Cheating turns the assignments into an exercise that is a waste of both your time and ours; save us both by not doing it.

Cheating consists of sharing code or solutions to assignments by either copying, retyping, looking at, or supplying a copy of a file. Examples include:

Cheating is a very serious offense. If you are caught cheating, you can expect an initiation of a cheating case in the University system and a zero for the assignment. Depending on circumstances, you may receive a failing grade in the course. Cheating is an insult to the instructor and course staff, to the department and major program, and most importantly, to you and your fellow students. If you feel that you are having a problem with the material, or don’t have time to finish an assignment, or have any number of other reasons to cheat, then PLEASE talk with the instructor, we are more than happy to work with students as needed. Just don’t cheat.

If you are in doubt about what might constitute cheating, send the instructor an email describing the situation and we will be happy to clarify it for you.

See Penn’s Code of Academic Integrity for more information.

Policy on Generative A.I.

This isn’t as much a policy as it is advice. For this class, I recommend against using generative ai like ChatGPT or related technologies. I am not denying that ChatGPT can be a useful tool, I am just not convinced it is useful for your growth and learning of the material in this class.

I do not claim that ChatGPT is useless by these statements. There are many things it can do, I just doubt their usefulness in this class. We will not ban the usage of ChatGPT or similar tools except for during exams, but we expect you to be able to:

All in all, use your best judgement.