A printable PDF is also available.

CSC 362-01 – Fall 2021 – Syllabus

Instructor: Stephen R. Tate (Steve)
Lectures: Tues/Thurs 11:00-12:15 (via Zoom)
Office Hours: Tues/Thurs 1:45-3:15 (or by appointment), in-person or virtual – see below
Office: Petty 157
E-mail:

Section and Delivery Information: While the COVID-19 pandemic is ongoing, the wide availability of safe and effective vaccines provide hope that somewhat normal, in-person classes can be held. However, this class requires regular group work, which makes social distancing difficult for an in-person class. Because of this, we are offering two different sections of CSC 362 in the Fall 2021 semester. This section will be entirely online, with classes using the Zoom teleconferencing software and group work using Zoom breakout rooms. Links to Zoom meeting rooms for lectures and office hours are available in Canvas. If you prefer the face-to-face class, please look into section 2 (CSC 362-02).

While online, 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.

Office hours are available both in-person (in my office, Petty room 157) or online via Zoom – a link to the Zoom office hours room is in Canvas. Please be aware that my office is a small enclosed space, and if you are uncomfortable with that you can connect via Zoom. Also, due to my small office space, down a short but narrow side-corridor, you are asked to wait in the more open main hallway if I am meeting with someone else (in person or virtually). If I’m talking to someone online when you arrive, make sure I see you and then I will come out to the main hallway to let you know when I’m available after the online session. I can only meet with one person at a time during office hours.

Class Web Page: https://www.uncg.edu/cmp/faculty/srtate/362.f21/ 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.

Required computing environment: Students must have a computer with camera and microphone to participate in the Zoom meetings, and the computer must be capable of hosting a modest virtual machine environment using Virtualbox – any modern system with at least 8GB of RAM should be fine (Windows, Linux, or MacOS systems will all work). A Linux virtual machine image will be provided to students so that there is a uniform system environment for all students to use for class work. During in-class activities, students must be able to share their screen with their team through Zoom, and may be called on to show and explain their solution in the post-activity discussion.

GitHub and GitHub Classroom: Students must have a GitHub account to do activities and submit work. We will spend some time in class going over basic Git and GitHub usage, and students will be given information on class-specific procedures to follow for this class.

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. The first (Tuesday) class of each week will be a traditional lecture class, covering new material with discussion and instructor-run examples. The second (Thursday) class of each week will have a short introductory lecture time (approximately 30 minutes), followed by an in-class activity (approximately 30 minutes), and finally a wrap-up discussion (approximately 15 minutes). Details and grading are described below.

In-class participation: Students are expected to participate in class sessions, and attendance will be taken from the Zoom participant list as well as in-class survey questions (questions will not be graded for correctness, just participation, so every student should answer every survey question). All in-class activities will be done in small teams, with a designated “team leader” who will be responsible for submitting the team’s work. All students will be required to have their camera on and actively participate in these activities, and participation points will be deducted if a student’s camera is off during the activity. Each student will have a single GitHub repository for all in-class activities, with new directories pushed by the instructor for each activity. Before each activity, students will do a “git pull” to update their local copy of the repository with the new activity, and the team leader will commit and push the work when finished. In-class activity submissions will also count toward each student’s attendance/participation grade. Each student gets two free “skip days” before attendance penalties are taken, but use of skip days is strongly discouraged! Since skip days are available, there is no notion of excused/unexcused absences (skip days must be used for either).

Weekly 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 activity). 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. Like the in-class activities, each student will have a single GitHub repository for all weekly assignments, and must use a specific “Finished” commit message on their final submission, indicating that they are finished working and the submission is ready for grading (more information on this is in the first weekly assignment). Always check the GitHub website to make sure you really submitted what you think you submitted!

Major Assignments/Project: There will be 3 or 4 larger programming assignments throughout the semester that will build to a single final project that incorporates several of the class topics. These major assignments are to be done on your own, and 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 Tuesday, October 5 during the regular class time, and the final exam is scheduled according to the university final exam schedule (December 7, 12:00-3:00). Exams are online, and 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
Attendance/participation 10%
Weekly Assignments 30%
Major 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/.

In weekly 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 weekly assignments, you must put their names in the assignment’s README.md file (there is a place for this). Major assignments must be done on your own, and you may not discuss the assignment with anyone other than the instructor. If you need help during a major 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 (current or past) 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 reasons, 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 an exam 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 should 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, including student interactions in the main room (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.” 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.