A printable PDF is also available.

CSC 362 – Spring 2021 – Syllabus

Instructor: Stephen R. Tate (Steve)
Lectures: Tues/Thurs 2:00-3:15 (via Zoom)
Office Hours: Tues/Thurs 11:00-12:15, or by appointment (via Zoom)
E-mail:

Notes for Spring 2021: Due to the ongoing COVID-19 pandemic, classes and office hours are online using the Zoom teleconferencing software – links to the classroom and office hours room are provided in Canvas. Note that this class is synchronous, which means you are expected to be present and interacting with the class during the scheduled time period. You must be logged in to your UNCG account to attend the Zoom class, which will be the basis for taking attendance for each class. While the lecture portion of each class will be recorded, the recordings are for review and for rare instances when you are not able to attend “live.” There will be real-time group exercises, using Zoom breakout rooms, which students are required to participate in. A Linux virtual machine image (configured for use with Virtualbox) will be provided to students so that there is a uniform system environment for all students to use. Students must have a computer that is capable of hosting this virtual environment – any modern system with at least 8GB of RAM should be fine. In addition, class activities will include group work (through Zoom breakout rooms) so students must have camera/audio capabilities for collaboration during class and be able to share their virtual machine screen for group programming exercises. During in-class activities, students will be expected to share their screen with the entire class and explain their solution to an in-class programming activity.

Class Web Page: https://www.uncg.edu/cmp/faculty/srtate/362.s21/ plus Canvas

Catalog Description: System programming with emphasis on processes, memory management, multithreaded programming, synchronization and deadlocks, interprocess communication, parallel and distributed computing, networking, files systems, security, signals, and virtualization containers.

Prerequisites: Grade of C or better in CSC 230 and CSC 261, or permission of instructor.

Longer Description: This class is a programming-focused class, exploring how programs interact with the operating system and use system and related services. As far as programming level, you can consider it as sitting between CSC 261 (hardware and assembly language) and CSC 130/230 (higher-level programming without hard connection to the underlying system). The class will use C for programming in a Linux environment, interacting with the system through Linux system calls, the standard C library, and support libraries such as pthreads. The class is heavy on specifics and concrete details, and light on theory/generality which will be covered in a later class (CSC 462 – Principles of Operating Systems).

Student Learning Outcomes: Upon successful completion of this course students should be able to

  1. diagram basic process structure and resources, including memory segments, file handles, user/ownership;

  2. use manual memory management techniques for dynamic memory allocation in a program;

  3. create programs that use threads for parallel processing;

  4. create programs that use network sockets for inter-system communication;

  5. create programs that use message passing between different systems for distributed computing;

  6. explain basic security principles, including core goals of confidentiality, integrity, and availability, and subject/object access control;

  7. use virtual machines and containers for isolation.

Textbook and Readings: The required textbook is the following, which is freely available online:

B. Venkatesh, L. Angave, et al., System Programming Coursebook
Available at http://cs241.cs.illinois.edu/coursebook/index.html

Additional readings will be required, and links be provided to students as needed.

Topics: The following are the major topics that will be covered in this class. A detailed schedule, including references to textbook and other readings, is on the class website.

Teaching Methods and Grading: This class will meet online for two 75-minute periods per week. A typical class will consist of approximately 40 minutes of topic presentation and example coding by the instructor, followed by 20 minutes of collaborative coding exercises done by students in Zoom breakout rooms, followed by 15 minutes of solution presentation and wrap-up. This format is flexible, and might vary according to topic. Details and grading are described below.

In-class participation: Students are expected to participate in class sessions, and programming problems will be assigned to be solved in small groups. In-class exercises will start from shared GitHub repositories, and will typically form the beginning part of weekly collaborative programming assignments (see below). A random participant will be selected for each problem to describe the solution of their group, with each student required to present at least one solution during the semester. Attendance is taken using the Zoom participant list, and the in-class participation grade will depend on attendance, work done and submitted for in-class problems, and solution presentation. Each student gets two free “skip days” before attendance penalties are taken, but use of skip days is strongly discouraged!

Weekly Collaborative Assignments: Each topic will include a programming assignment. These will be due every Tuesday, using concepts from the previous week (and typically being an extension of the previous week’s in-class exercises). These are collaborative, meaning you can discuss solutions with other students, but you may not copy any code or answers – all code must be typed, compiled, and debugged by you. Note that while these are primarily programming assignments, some will include written questions to answer in a file submitted with your code.

Solo Assignments: There will be 4 or 5 programming assignments throughout the semester that you are expected to solve entirely on your own. You may not discuss these with other students or any other person other than the instructor.

Exams: There will be one mid-term exam and one final exam. The midterm exam will be March 9 during the regular class time, and the final exam is scheduled according to the university final exam schedule (May 6, 3:30-6:30). Exams are online, but must be done at the scheduled time.

Final Grade Calculation: Each student work product will be graded, and the student’s final grade will be determined by assigning each category of work a weighted score according to the following distribution:

Category Pct
In-class/participation 10%
Collaborative Assignments 30%
Solo Assignments 25%
Mid-term Exam 15%
Final Exam 20%

 

Letter Grade Assignment
[87.5 , 89.5) = B+ [77.5 , 79.5) = C+ [67.5 , 69.5) = D+ [0 , 59.5) = F
[91.5 , ∞) = A [81.5 , 87.5) = B [71.5 , 77.5) = C [61.5 , 67.5) = D
[89.5 , 91.5) = A- [79.5 , 81.5) = B- [69.5 , 71.5) = C- [59.5 , 61.5) = D-

Academic Integrity: Students are expected to be familiar with and abide by the UNCG Academic Integrity Policy, which is online at https://academicintegrity.uncg.edu/.

Assignments are clearly labeled as collaborative or solo, which indicates whether you can discuss the assignment with other students or not. In collaborative assignments, you may discuss the problem and solutions with other students and can help classmates debug their code. However, no code may be copied from either another student or from a website — all code submitted must have been written by you. If you do work with other students on collaborative assignments, you must put their names in a comment at the top of the file that you collaborated on. Solo assignments are just that – solo – and you may not discuss the assignment with anyone other than the instructor. If you need help during a solo assignment you can (and should!) contact the instructor for help, but cannot talk with another student or post something online seeking help. Sharing your own work is a serious violation of academic integrity, and if homework is copied then both the person who actually did the work and the person who copied it will be punished. Note that I use a plagiarism detection tool on submissions, and if your solution is too close to that of another student or of an online resource, you will be required to explain your solution and how you arrived at it.

Any incidents of academic dishonesty will be handled strictly, resulting in either a zero on the assignment or an F in the class, depending on the severity of the incident. Any cheating in an online exam, no matter how minor, will result in an automatic F in the class. Significant incidents will be reported to the UNCG Office of Student Rights and Responsibilities. Note that the Department of Computer Science maintains records of all academic integrity incidents, and multiple violations, even in different classes or semesters, will always result in reporting to the university and serious penalties.

Attendance Policy: Attendance is required, and students are expected to attend class sessions. Attendance is part of the final grade calculation, as described above. The university allows for a limited number of excused absences for religious observances. Students who plan to take such an absence should notify the instructor at least two weeks in advance so that accommodations can be made.

Late Policy and Makeup Exams: Assignments are due at 11:59PM on the due date, and may be turned in up to 7 calendar days late with a 25% late penalty. Students with planned absences, whether for university events, religious observance, or other reason, are expected to make arrangements with the instructor to turn in assignments or take exams before the scheduled date of the assignment or test. No assignment will be accepted more than 7 calendar days after the original due date!

Exam/test dates will be announced at least two weeks in advance, and may be made up only if it was missed due to an extreme emergency and arrangements are made before the exam date. Exams may not be taken early or late due to personal travel plans.

Given the COVID-19 situation, I will be flexible and accommodating within reason, but students must inform me of any complications in advance of due dates.

In-class Behavior: During class time, you should be focused on the class. As so much work has moved online in the past few months, there has been a lot of attention to having a professional online presence, which is expected of your participation in this class. This includes everything from backgrounds to dress to other activities going on in your home or workspace. While we can’t control every detail in a work-from-home situation – life happens, after all – you should treat this as a professional setting and act accordingly. You should keep your microphone muted when you are not actively engaged in a class discussion. To promote a sense of community, you are asked to turn on your camera when participating in in-class work groups or when asking or answering a question in the full class setting.

Health and Wellness: Health and well-being impact learning and academic success. Throughout your time in the university, you may experience a range of concerns that can cause barriers to your academic success. These might include illnesses, strained relationships, anxiety, high levels of stress, alcohol or drug problems, feeling down, or loss of motivation. Student Health Services and the Counseling Center can help with these or other issues you may experience. You can learn about the free, confidential mental health services available on campus by calling 336-334-5874​, visiting the website at https://shs.uncg.edu/ or visiting the Anna M. Gove Student Health Center at 107 Gray Drive. For undergraduate or graduate students in recovery from alcohol and other drug addiction, the Spartan Recovery Program (SRP) offers recovery support services. You can learn more about recovery and recovery support services by visiting https://shs.uncg.edu/srp or reaching out to recovery@uncg.edu

ADA Statement: UNCG seeks to comply fully with the Americans with Disabilities Act (ADA). Students requesting accommodations based on a disability must be registered with the Office of Accessibility Resources and Services located in 215 Elliott University Center: (336) 334-5440 (or on the web at https://oars.uncg.edu). Note that if you require testing accommodations you must make arrangements more than one week before any exam.

Zoom Classes and Recordings: The lecture parts of this course (main room only – no breakout rooms) will be recorded for students to use for review and study, and for rare instances when you are not able to attend “live.” Recordings will include student presentations and interaction in the main lecture room. Access to recordings in Canvas and Panopto will be restricted to class attendees, and students may not attempt to make copies of these recordings or distribute them in any way.

Elasticity Statement: It is the intention of the instructor that this syllabus and course calendar will be followed as outlined, however, as the need arises there may be adjustments to the syllabus and calendar. In such cases, the instructor will notify the students in class and via e-mail with an updated syllabus and calendar within a reasonable timeframe to allow students to adjust as needed.