CIT 595 Course Overview (Spring 2015)

Course Objectives

This course is a continuation of CIT 593 and is divided into three parts. We will begin by building on your knowledge of C and covering systems programming in C for Linux, specifically the libraries that programmers use for threading and concurrency, synchronization, inter-process communication, and networking. The second part of the course introduces the C++ programming language, and the final part of the course covers important concepts in modern operating systems: processes, scheduling, caching, and virtual memory.

After completing this course, you will have the requisite knowledge and experience for systems-focused CIS electives such as 505 Software Systems, 542 Embedded Systems Programming, and 553 Networked Systems.

Class Meeting Times

Lecture: Tues/Thurs 10:30am-noon, location TBA
Lab/Recitation: Thurs 3:00-4:30pm, location TBA

Back to Top


There will be no required textbook for this course. There will be numerous assigned readings over the course of the semester, but they will be made available to you via Canvas.

Back to Top


Note that these are only guidelines, but final course grades will likely be based on the following:

  • Homework assignments (40%)
    • There will be 7-8 programming assignments over the course of the semester
    • You must work on these assignments alone unless specifically noted
  • Exams (30% total)
    • There will be three exams over the course of the semester; each is worth 10% of the final grade
    • The first two exams will be held during classtime following the first (systems programming) and second (C++) parts of the course
    • The third exam will be held during the final exam period and will cover only the last part of the course (OS concepts)
  • Lab assignments (10%)
    • These will be short programming assignments to be completed during the lab time
  • Group project (20%)
    • This is a final capstone project that you will complete in groups of 2-3.
    • More info coming soon!

Back to Top

Requesting a Regrade

Credit for work will be recorded only as reported by the TA in the Gradebook in Canvas. It is your responsibility to make sure that your work has been properly recorded in the Gradebook.

Make sure you notify the TA of any problems regarding missing records or incorrectly entered scores; the grade entries in Canvas will be considered permanent one week subsequent to their posting.

If you need to request a regrade for an assignment, please try to adhere to the following policy:

  • If there was a math mistake in calculating or recording your grade, please email the TA who graded it. I'm sure they'll be happy to fix it.
  • If you lost points for something you did correctly, e.g. the grader said "-2 points for not doing X" and you actually did do that (or something similar), please speak with the TA who graded it during office hours. I think it's easier to discuss these things in person than over email. However, if you can't attend their office hours, then email them to try to arrange another time to meet.
  • For any other issues, please contact the instructor. This may be things like "I didn't realize we had to do X," "I misunderstood this part of the assignment," etc. This isn't to say that you'll necessarily get points back for your misunderstanding, but issues such as these should go to the instructor.

Back to Top

Academic Integrity

All work submitted for this class is expected to be your own, unless otherwise noted in the assignment instructions. If you are caught submitting work that is completely copied from some other source, or that has been prepared by somebody other than you, you will face severe discipline by the university.

Homework assignments are to be completed individually unless explicitly stated. You may talk to fellow classmates regarding the assignment and share ideas on Piazza, but keep in mind what is appropriate and inappropriate about your collaboration:


  • Person A doesn't understand what exactly the problem is asking, e.g. writing actual C code vs. pseudocode. He discusses this with Person B to arrive at one or the other.
  • Person A does not understand a particular concept. Person B explains the concept using an example, other than one asked on the homework.


  • A attempts half the problem, and B attempts the other half. A and B copy the solutions to half the assignment that the other person wrote.
  • Together, A and B work out each homework problem on chalk/white board; then they separately copy down their work and turn it in.
  • Person A completed a programming assignment and just before turning it in, he deleted his program - oh no!!!. In desperation, he asks Person B if he can turn in a copy of her program.
  • Person A happens to be in the lab working on the assignment and notices that Person B is working on the same assignment. Person A is having trouble compiling his program, and asks Person B to fix the problem for him. Sounds safe, right? It's not.

Note: When in doubt always ask the instructor or TA first, to avoid any potential collabration that can lead to academic dishonesty.

You can further read Penn's Code of Academic Integrity page on this subject matter, as well as the SEAS Graduate Student guidelines on the code of ethics.

Back to Top

Homework turn-in procedure

You will turn-in all homework assignments using Canvas.

You may submit multiple times, but only the last submission will be graded.

Submissions after the deadline are subject to a 10% per day penalty, up to seven days, after which the submission will not be accepted.

Back to Top