CS240: Programming in C (Summer 2023)

Course Information

MTWR 9:50-10:40am
MSEE B012

Instructor:
Kihong Park
park0@purdue.edu
765-494-7821
office hours: TR 11-noon, and by appointment (HAAS 220)

Teaching Assistants:
GTA:
Rashmi Bhaskara
bhaskarr@purdue.edu
office hours: TR 2-3pm (HAAS G072)
Bushra Ferdousi
bferdous@purdue.edu
office hours: R 3-4pm, F 1:30-2:30pm (HAAS G072)
Jasorsi Ghosh
ghosh117@purdue.edu
office hours: TR 1-2pm (HAAS G072)
Aluthgedara Jayatilaka
ajayati@purdue.edu
office hours: T 3-4pm, F 11-noon (HAAS G072)
UTA:
Tri Minh Tran
tran197@purdue.edu
Labs: W 12:30-2:20pm (LWSN B146/B148), 3:30-5:20pm (HAAS G56/G40)
office hours: T 1-4pm (HAAS G072)

Labs:
MW 12:30-2:20pm (LWSN B146), Ghosh
MW 12:30-2:20pm (LWSN B148), Bhaskara
MW 2:30-4:20pm (HAAS G056), Ferdousi
MW 3:30-5:20pm (HAAS G040), Jayatilaka

Textbook:
The C Programming Language by Kernighan and Ritchie, latest edition (required)

Announcements

Labs/Assignments

Lecture Notes

The lecture notes will comprise of slides (Prof. Cristina Nita-Rotaru), additional pdf slides, and discussion of material in class using the whiteboard. Attendance and lecture note taking is important for successful completion of the course.

Prerequisites:

CS 180.

Grading Policy

The grade will be determined by a midterm, a final, lab assignments, and attendance. Their relative weights are:

Midterm 25%
Final 25%
Lab assignments 45%
Attendance 5%

Attendance is required. You may miss up to 3 lectures without impacting the 5% contribution of attendance on course grade. If 4 or more lectures are missed, contribution from attendance will be zero.

Lab assignments will have opportunities to earn bonus points. These points serve to more easily reach the maximum achievable points in the lab assignment component. The points do not carry over and are capped at 45%. The same goes for the midterm and final exams which are capped at 25% and 25%, respectively. The course grade is not curved. Approximately, a total weighted score in the 90s maps to an A-range grade (includes +/- grades), mid-70s to 80s for B-range, mid-60s to low-70s C and C+. Below that C-, D+, etc.

Labs and Policies

We will use Linux PCs in the labs HAAS G040 (borg), HAAS G056 (escher), LWSN B146 (moore), and LWSN B148 (pod) as our development and evaluation environment. For example, the first machine in HAAS G040 is named borg01.cs.purdue.edu, the second machine borg02.cs.purdue.edu. Machines names (i.e., hostnames accessible via Internet) are specified by tags attached to lab machines. All code must be compiled on the labs' Linux PCs and run natively on their x86 hardware. If you decide to code on other platforms (e.g., Linux, Windows, MacOS on different hardware), you must ensure that your code compiles and runs correctly on the lab Linux PCs. Code that compiles and runs correctly on other platforms but does not on the Linux PCs in the labs will receive a 75% penalty. The lab machines can be accessed remotely via TLS/SSL applications such as ssh on Linux/MacOS and PuTTY (or OpenSSH) on Windows.

Getting your CS account.

Students registered in the course should have an account automatically set up. Please check by going to one of the labs and logging in to one of the Linux PCs. If you have registered up but don't have an account, please contact ScienceHelp@purdue.edu.

Late Policy

To help manage unexpected scheduling demands, you are given a budget of 4 late days in total that may be used for late submissions of lab/homework assignments. For example, you may submit 1 day late on four lab assignments, or 4 days late on one lab assignment. Any combination is valid as long as the total days delayed does not exceed 4. There will be a total of 7 lab assignments. Late days not utilized at the end of the semester will be converted to 15 bonus points each (maximum of 60). Outside of the 4 late days, all deadlines are hard and no partial credit will be given.

Due to the systems oriented nature of the lab assignments, coding, running and testing on lab hardware is time intensive. You cannot acquire proficiency in C programming and relevant systems skills without going through the process of debugging, understanding the nature of the bugs, and how to correct them. There is no short-cut.

Academic Integrity

We aim to foster an open and collegial class environment. At the same time, we are vigorously opposed to academic dishonesty because it seriously detracts from the education of honest students. Because of this, we have the following policy on academic integrity, consistent with Purdue University's official policy.

All CS240 assignments are individual efforts and collaboration of any form is not allowed. This includes discussing solution ideas and sharing of code. Utilizing others' code found on the Internet is not allowed. If you have a question or are unsure, please contact me.

Students who share their work with others are as responsible for academic dishonesty as the student benefiting from the material. Students are not to show work to other students, and are responsible for the security of their work. File/directory permissions must be set to be unreadable to others (e.g. use "chmod -R 700 *" from your home directory). The same goes if you utilize depositories such as GitHub. If you need assistance protecting your work, please contact the TAs or the instructor.

Students who encourage others to cheat or plagiarize, or students who are aware of plagiarism or cheating and do not report it are also participating in academically dishonest behavior.

We will use a software tool, MOSS, to check for copying among submitted assignments. Additionally, we will inspect all submitted material to detect academic integrity violation.

If you have any assignment related questions, please utilize the labs and office hours which are scheduled Monday-Friday. The main difference between getting help on coding related questions from the instructor/TAs versus a fellow student is that the instructor/TAs will provide assistance that help you tackle a problem on your own without revealing the solution.

Any case of academic dishonesty will be dealt with by a severe grade penalty in the overall class grade and referral to the office of the Dean of Students.

Emergencies

In the event of an emergency, course requirements, deadlines, and grading percentages are subject to changes that may be necessitated by a revised semester calendar. If such unusual circumstances arise, students may determine any such changes by contacting their instructors via email or phone, and checking the course web page for updates. In the event of a family emergency, please contact the instructor to set accommodations following university rules.

Campus emergencies and closings will be announced on local media and on the main Purdue University WWW site http://www.purdue.edu. Please consult the Purdue emergency preparedness resources web site for detailed information and relevant resources. Consult the Protect Purdue Plan for COVID-19 specific information.

In the event of health issues, please contact the Protect Purdue Health Center (PPHC) or your health care provider to receive support and medical attention. Reach out to your Academic Case Manager acmq@purdue.edu to receive additional assistance. In case of hospitalization and other urgency care, please contact the Office of the Dean of Students (ODOS) who will document and notify the instructor. Please check MEAPS for additional details.

Purdue University is committed to advancing the mental health and well-being of its students. If you or someone you know is feeling overwhelmed, depressed, and/or in need of mental health support, services are available. For help, contact Counseling and Psychological Services (CAPS) at 765-494-6995 during and after hours, on weekends and holidays, or by going to the CAPS office on the second floor of the Purdue University Student Health Center (PUSH) during business hours.

Nondiscrimination

Purdue University is committed to maintaining a community which recognizes and values the inherent worth and dignity of every person; fosters tolerance, sensitivity, understanding, and mutual respect among its members; and encourages each individual to strive to reach his or her potential. In pursuit of its goal of academic excellence, the University seeks to develop and nurture diversity. The University believes that diversity among its many members strengthens the institution, stimulates creativity, promotes the exchange of ideas, and enriches campus life. A hyperlink to Purdue's full Nondiscrimination Policy Statement is included in Brightspace under University Policies.

Accessibility

Purdue University is committed to making learning experiences accessible. If you anticipate or experience physical or academic barriers based on disability, you are welcome to let me know so that we can discuss options. You are also encouraged to contact the Disability Resource Center at: drc@purdue.edu or by phone: 765-494-1247.

Course Content

This is an undergraduate introductory course to programming in C. Topics covered include: overview of C programming language, machines, compilers, operating systems, software development; data types, operators, and expressions; control flow; functions and program structure; pointers and arrays; dynamic memory allocation; structures; input and output; multithreading; operating systems support for advanced programming.