IC221: Systems Programming (SP17)

Home Policy Calendar Units Assignments Resources

Course Policy for IC221 Spring AY17

General Information


  • Asst. Prof. Adam J. Aviv
    • aviv@usna.edu
    • MI325
    • x3-6655


  • Capt. Tim Garcia (USMC)
    • tgarcia@usnau
    • MI353
    • x3-6826

Course Description

  • This class covers the foundations of UNIX and interacting with UNIX through the system call API (in C) and the shell (in bash).

Course Objectives and Assessment

Learning Objectives

  • Understand the operation of the UNIX OS from the user, systems programmer, and application programmer perspective. (supports Student Outcome i and g)
  • Use a UNIX command shell to interact the file system, developing basic scripting, and develop command line tools. (supports Student Outcome i)
  • Interact with the O.S. through system call API to manage processes and interact with the file system (supports Student Outcome i)
  • Use standard debugging techniques using gdb and valgrind (supports Student Outcome i)
  • Design simple network programs that use the socket API (supports GSO i and EC310 Objective 1)
  • Design software on UNIX that uses concurrency to solve problems. (supports Student Outcome i)
  • Learn basic operating system security concepts such as those related to file permissions, user group permissions, unintended execution paths. (supports Student Outcome e, i and g and EC310 Objective 2)

Student Outcomes

This course contributes to CS/IT program assessment goals:

  • (Student Outcome e) An understanding of professional, ethical, legal, security, and social issues and responsibilities
  • (Student Outcome i) An ability to use current techniques, skills, and tools necessary for computing practices.
  • (Student Outcome g) An ability to analyze the local and global impact of computing on individuals, organizations and society
  • EC310 Course Objective Assessment

EC310 Learning Objectives

This course contributes to the following EC310 learning objectives:

  • (EC310 Objective 1) Describe in depth the principles, mechanisms, and technologies of information systems' hardware and software in both computers and communications domains, and describe the development of typical exploits used against vulnerabilities in information systems.
  • (EC310 Objective 2) Identify action that can be taken to protect information systems' hardware and software in both computers and communications domains against potential exploits.

Text Book

  • Advanced Programming in the UNIX Environment (3rd ed.), Stevens, Rago (optional)

Extra Instruction and MGSP


  • You are strongly encouraged to come in for extra instruction (EI) when you are having trouble. Your individual instructors will have different feelings about drop-ins versus appointments.
  • You MUST seek assistance and EI from your instructor first before seeking assistance from other instructors and should only do so once your instructor has acknowledged that they are unavailable to meet in a timely manner. A timely manner is within 2-3 working days. Please be respectful of your instructors time and availability, and you should always feel free to email your instructor for help.
  • If your instructor is away for an extended period of time, instructions will be provided on whom you should contact for assistance.
  • You may seek help from MGSP at any time without instructor permission


There will be three MGSP student leaders to compliment extra instruction to be held before labs and homework are due.

  • Sun. 2000-2100 in MI302
  • Thr. 2000-2200 in MI302

Collaboration Policy

The honor and collaboration policy of this class references and adapts the language of Computer Science Department Instruction 1531.1D, Policy Concerning Programming Projects. We make the following course-specific adaptations and revisions below; however, when not explicitly stated, of the Department's policy holds.

Homework Collaboration Policy

  • You may work freely with classmates on the homeworks. This includes working together and solving problems together.
  • You are required to indicate all collaborators on your homework assignments.
  • Each student must submit an individual assignment, and the pencil-to-paper/fingers-to-keyboard work must be your own. Even when collaborating, in many situations, we do not expect two students to produce the same answer.
  • Copying of homework assignments is strictly forbidden and is considered an honor violation. We define copying as the act of viewing or discussing another's answers, copying down those answers without having completed the work individually.

Lab and Project Collaboration Policy

  • All programming assignments must be the sole work of the student.
  • You may not collaborate on any project or lab programming assignment without instructor permission.
  • You may not receive or copy program code from other students.
  • You may not share your program code with other students.
  • You may not view another student's program code.
  • You may not view solutions to program assignments from other semesters, other classes at USNA or elsewhere, or from other unauthorized sources, such as the Internet.
  • You must be prepared to explain any program code you submit.
  • All submission are subject to automated plagiarism detection.

Lab and Project Discussion Policy

  • You may discuss any assignment with other students in a abstract, problem solving way, and you are strongly encouraged to do so. However, discussion should not violate the collaboration policy as stated above, for example, you may not view other students' solutions or share your code with other students.
  • You may ask an instructor for help, show an instructor your code, and use any code provided by an instructor in your submission. However, you may not share program code (or pseudocode) provided by an instructor to you with other students unless authorized and doing so would violates the collaboration policy of viewing other students' solutions or sharing your code with other students.
  • If you received any assistance in completing an assignment through discussions with another student or instructor, you are required to acknowledge that assistance in your README file.
  • While discussion based assistance is allowed, it in no way implies that the assisted and assisting student will submitting identical program solutions. As indicated by the collaboration policy, all programming assignments must be the sole work of the student, and it is highly unlikely, even with assistance, two students' independently programmed solutions would be identical.

Classroom Conduct

  • Beverages are permitted in classrooms and labs provided they are in closed containers. No food or smokeless tobacco is permitted in classrooms or labs.
  • Vulgar language and classroom disruptions will not be tolerated. A student who disrupts the class for those reasons will be asked to leave immediately and will be marked has having left early in the attendance roster and may be considered for a conduct offense.

Late Policy

Homework Late Policy

  • Homeworks for each week will post on the first lecture of the week, and are typically due the following week's first lecture (unless othwerise noted)
  • Homeworks must be submitted in hard copy to the instructor. Typing your homework is strongly encouraged.
  • Late Homework will not be accepted.
  • If you are unable to attend the first lecture of the week due to an excused absence, such as M/O or SIQ, you are expected to submit the homework at the next, most convenient lecture or lab.

Lab Late Policy

  • All labs are released on Friday and will be due the following Thursday at 23:59 (unless otherwise noted).
  • All lab submissions must occur via the course submit system, which can ONLY occur via the lab computers. Submission by other means will not be accepted.
  • Lab Grace/Late Days:
    • Each student will have 3 grace days to submit an assignment late without penalty. You must notify the instructor through the instructor specified means 12 hours prior to the lab deadline to use a grace day
    • Grace days are applied in full, a whole day is applied even if submitted less then 24 hours past the deadline. For example, a student that submits on Friday at 1200 still uses a full grace day, and a student who submits on Saturday at 2000 has used two grace days.
    • Once all grace days are used, students may not submit late. The assignment will receive a zero.
    • Weekdays and weekends are treated equally in this policy.

Project Late Policy

  • Projects are assigned as part of each marking period and are due on the date specified by 23:59. Late submission will not be accepted.
  • If there is extenuating circumstances regarding the submission of a project, be sure to speak with your instructor as soon as possible.
  • You may not use late days for projects.

Quiz Late/Absence Policy

  • You are not required to make up a missed quiz and a missed quiz will not count against your grade.
  • You are encouraged to review any quiz questions that you missed with your classmates.

Grading Policy

Grading Breakdown

  6-week 12-Week 16-Week Final Grade
Final Exam       25%
12-Week Exam   22.5% 22.5% 10%
6-Week Exam 45% 22.5% 22.5% 10%
Homework 15% 15% 15% 15%
Labs 20% 20% 20% 20%
Projects 18% 18% 18% 18%
Quizzes 2% 2% 2% 2%
EI +1% +1% +1% +1%
Total 100% 100% 100% 100%

Final Exams

  • Final Exams are closed book and closed notes
  • You will be allowed to bring in one hand written sheet of paper, two sided, with notes on it to be used during the final exam. You'll turn in your sheet with your final exam.

6- and 12-Week Exams

  • There two midterm exams occurring at roughly 6 and 12 weeks
  • If you are unable to take a midterm, you must provide an alternative time to make up the exam to your instructor
  • Midterm exams are closed book and closed notes
  • You will be allowed to bring in one hand written sheet of paper, two sided, with notes on it to be used during the exam. You'll turn in your sheet with your exam, and will get it back upon grading the exam.


  • Homework for each week will post on the first lecture of the week, and are due the following week's first lecture, unless otherwise noted.
  • Homeworks must be submitted in hard copy to the instructor. Typing homework assignments are strongly encouraged, but not required.
  • Homeworks will typically be graded out of 100 points, unless otherwise noted.


  • Lab grading guidelines will be provided with the lab and will typically be graded out of 100 points unless otherwise noted.


  • Project grading guidelines will be provided with the project and will typically be graded out of 100 points unless otherwise noted.


  • There will be regular quizes during lectures consiting of 1-3 short response questions to be taken at the beginning of class.
  • Quizzes will be self graded, without partial credit
  • Quizzes are designed to provide a check on knowledge and sample exam problems


  • While EI is not required, it is strongly encouraged.
  • You can receive 1% bonus on your final grade for attending at least two EI session prior to the 16-week grading mark.
  • If you cannot make an EI session due to whatever reason (e.g., sports), you can conduct online, email discussion with your instructor based on the direction of your instructor.


Adam J. Aviv
Course Coordinator
CDR Michael Bilzor
CS Department Chair