Fall 2024 Syllabus
CpSc 1010
Computer Programming I
Section 001 CRN 85362 MWF 8:00–8:50 am Jordan G33
Section 002 CRN 86638 MWF 9:05–9:55 am Jordan G33

Course Description and Objective

Course catalogue description:
Introduction to problem solving and programming methods. Emphasis is placed on algorithm development. Includes use of appropriate tools and ethical issues involving computing are discussed. This is one of two normal entry-level courses for Computer Information Systems and Computer Science majors. (4 Credit hours, 3 Lecture hours)

Credit will be given for only one of CpSc 1010, CpSc 1060, or CpSc 1110.

Preq: A CMPT score of 60 or higher; or CpSc 1040 or CpSc 1210

Coreq: CPSC 1011 lab.

This class is appropriate for undergraduate students who desire to learn how to write computer programs in a Linux or UNIX environment. No prior programming experience is required. By the end of the semester, you should be able to do the following:

  • Apply knowledge of planning, designing, compiling, running, testing, and debugging C programs in a UNIX/Linux environment
  • Design and implement computer programs to solve problems that use variables, operators, expressions, decision statements, and/or operators
  • Apply best practice programming techniques in a software project, including formatting and modular design
  • Write the output of a program by tracing through its source code
  • Discuss current or historical issues in computing and how they relate to society

Course Delivery Plan

Class will be in person this semester. Attendance for each class meeting will be expected and taken. Zoom may be used only on an as-needed basis if the instructor is sick or traveling, but otherwise will not be used. The meeting times and links to the Zoom classroom will be available through the Canvas course page.

The general rule of thumb with computer science classes is that for every hour of lecture, 2-3 hours of out-of-class work is expected in order to understand and retain the material. With that in mind, the content for each lecture will be provided on Canvas as pre-class asynchronous instruction that students will be required to review prior to the class meeting. Lectures will consist of review using recall questions to gauge understanding of the material as well as presentation of new concepts and at times, in-class exercises.

On occasion, in-class exercises may involve peer-instruction where an exercise or question will be presented and students will be given time to formulate their answers and then work together to solve the exercise or question. The group discussion often results in students explaining the concepts to their teammates who may have answered it incorrectly at first. Then a full class discussion will take place providing additional modeling of the concepts and further clarification. Studies have shown that students are more satisfied, and understand and retain the material better when peer instruction is involved. Other classes may consist of other active learning activities, which also serve to engage students in the material.

We will use the following technologies:

  • Canvas for all course materials and all exams. Exams will require Respondus Lock-Down Browser.
  • Gradescope, which is an online grading tool that can be used for small programming assignments and other graded exercises, as well as the lab exercises.
  • Microsoft Teams will be used for office hours for the instructor and TAs. You are encouraged to download Microsoft Teams for your laptop at https://office365.clemson.edu and log in using your username@clemson.edu credentials. We will respond to students during office hours on a first-come, first-served basis. I will be available at various other times of the day whenever I am online via Teams as well.
  • Microsoft Teams may also be used for general questions related to the course (e.g., on a lecture topic, assignment, or lab), where you should post a message on the CPSC 1010 Fall 2024 Microsoft Team Group. This is the preferred way to ask for help on an assignment; however, do NOT post code on the Team Group. You can also use this as a way to organize and advertise study groups prior to exams.
  • Attendance will be taken daily using checkin.cs.clemson.edu.

General rule-of-thumb: if you have a question that is not grade-related, please use the appropriate Microsoft Teams channel rather than emailing the instructor.

Students should check their Clemson email account, Canvas, and Microsoft Teams at least once a day.

Your instructor will be available on Fridays from 11:30-1:30 on Teams for students who have questions. The lab TAs will also have office hours (to be announced early in the semester) and will also use Teams to help answer student questions.

Academic Continuity Plan

Clemson indicates disruptions to physical facilities (including classrooms) via email and SMS notifications. If the Clemson administration notifies you of a disruption (other than inclement weather closures, which abide by the policy listed below under the “Attendance” heading), or if environmental circumstances dictate, class will be conducted online via Zoom accessible on Canvas (http://clemson.instructure.com).
More details regarding academic continuity may be found at: http://www.clemson.edu/online/elearning/index.html. During the semester, we may have multiple tests of the academic continuity plan.

Student Requirements and Expectations

Students are required to:

  • have a functioning laptop computer with a webcam and microphone for this course. Your laptop should be running Windows 10/11 or MacOS X 10.14 or later. You are also strongly encouraged to have a working set of headphones with microphone for engaging via remote technologies, especially in situations where privacy may be warranted (such as discussing course grades with your instructor).
  • have a reliable broadband internet connection so that you may engage in any remote communications for this course.

Students are expected to:

  • attend all classes during designated times
  • actively participate in course interactions such as discussions
  • log into Canvas at least once a day to check for announcements and other materials being added to modules, which might include lecture materials as well as homework and quiz information
  • communicate with the instructor, TAs, and each other as a learning resource

Fall 2024 Books and Technologies

Required Text
Programming in C, 4th Edition
Stephen G. Kochan
Pearson Publishers
ISBN-13: 978-0-321-77641-9
Required Technologies and On-Line Accounts
Canvas for course materials, announcements, exams
putty or terminal for connecting to SoC computers for program development and testing
Zoom for occasional live class meetings
MS Teams for remote office hours
Recommended For Additional Practice and/or Resources
“Programming in C” at zyBooks.com 
$55 (or, students retaking the course, email support@zybooks.com)
sign in or create an account at learn.zybooks.com
enter code: CLEMSONCPSC1010KittelstadFall2024
ISBN-13: 979-8-203-20537-7
C Programming at w3resource
Code Chef
HackerRank.com
cplusplus.com
Unix in a Nutshell, 4th Edition
Arnold Robbins
O’Reilly Media
ISBN-13: 978-1565920019
ISBN-10: 1565920015

Many figures, diagrams, programs & snippets of code, and exercises found in the Kochan text book will be used in class materials. Any good beginner C programming source could be used as additional reference for this class. You are not required to bring the text book to class, although some students may find it useful to do so.

Tentative Topical Outline (the order of some topics may change)

  • Chapters 1 & 2: Intro and Fundamentals
    • programming in C, definitions, syntax
    • simple C programs to get started with
  • Chapter 3: Setting the Foundation
    • types & variables
    • arithmetic operators & precedence
    • typecasting
    • printing output / reading in input
    • numbering systems: binary, octal, hexadecimal
  • Chapter 4: Loops
    • for loops, while loops, do-while loops
    • also, redirection
  • Chapter 5: Conditional Statements
    • if, if-else, and if-else-if statements
    • switch statements
    • relational and logical operators
    • boolean variables
    • boolean expressions
  • Chapter 6: Arrays
    • arrays
    • 2D arrays
    • sorting
  • Chapter 9: Strings
    • C-strings
    • string functions and the string library
  • Chapter 7: Functions
    • function prototypes
    • function implementation
    • value-returning functions, void functions
    • arguments
    • scope
    • local/global/static variables
  • Chapter 14: Multi-Module Programs
    • compiling
    • external variables
    • header files
    • makefiles
  • Chapter 8: Structures
    • defining, with and without typedef
    • declaring, initializing
    • accessing and assigning values to
    • using dot notation or arrow notation
    • arrays of structs, structs containing arrays
    • structs as arguments to functions
  • Chapter 10: Pointers
    • declaring & initializing
    • assigning pointers
    • de-referencing pointers
    • as arguments to functions
    • referencing arrays with pointers
    • dynamic memory allocation
    • command-line arguments
    • sscanf() function
  • Chapter 15: File I/O
    • file pointers
    • EOF
    • file I/O functions
  • if time permits:
    • random number generators
    • recursion
    • linked-lists

Attendance

Studies have found that the single most important factor that contributes to success in a course is class attendance. With this class, like others, each lecture builds upon preceding lectures. Missing even a single class can sometimes make it difficult to keep up with the course material. Regular and punctual attendance at all class sessions is required and expected. Roll will be taken daily via checkin.cs.clemson.edu. If you do not sign in, you will be counted as absent.

Attendance is not recorded for a grade. However, there may be assignments or in-class exercises that must be completed during the class meeting, some of which are graded. If you do not attend class in person, you will not be able to complete the assignment. You can drop the 3 lowest grades for class activities so if you miss class for whatever reason up to 3 times, those will be the ones dropped. Being absent, excused or not, does not change the responsibility for material covered during the class, assigned work, announcements, and/or assignment modifications.

For University-sponsored events, students must provide written notice prior to the event. For all other excused absences, students should provide to the instructor as soon as possible, written documentation from an acceptable outside source (e.g., school administrator or physician) which covers the date(s) of absence.

Attendance is mandatory on exam days. No make-up exams or quizzes will be given. If you arrive late (or log in late) to the quiz or exam, you will be allowed to participate, but will not be given additional time to compensate for being tardy.

If I am more than ten (10) minutes late, you should assume that I am dealing with an emergency and will not make it to class. Check your email in those circumstances for further explanation.

In the event the university should cancel classes, inclement weather, power outage, etc., any exam that was scheduled will be given at the next class meeting unless contacted by the instructor. If there are any hard-copy assignments due at the time of the class cancellation, they may be due at the next class meeting unless contacted by the instructor. On-line assignment due dates will likely not change. Students will be notified of extension or postponement of assignments or exams through Canvas.

Lab attendance each week is mandatory.

Lecture Notes, Assignments, Homeworks

You are responsible for keeping up with the lecture material and taking notes as needed. Course materials will be posted in the modules on Canvas. My notes and slides are only references. It is your responsibility to take notes and ask questions if you need clarification.

Homeworks, which may include programming assignments, will be posted on Canvas. Each programming assignment will include formatting instructions, delivery instructions, and deadline. In order to be eligible for credit, submissions must conform to each of these requirements.

If you miss a class, you are responsible for the material and/or announcements covered during the missed class. Check your email and Canvas announcements daily. “I didn’t see this until today” is not an acceptable excuse for missing an email/announcement.

Grading

You are responsible for keeping track of your grades. I will post grades on Canvas, but Canvas may distort the way that the grades are weighted until the very end of the semester when all grades are entered. Therefore, you will need to do so yourself in order to have an accurate picture of your grade in the class.

Any emails regarding your grade must be sent from your @clemson.edu email address. I cannot discuss grades with an unverified email without risk of violating FERPA laws.

Laptop Policy

A functioning laptop is required for this class. Any Zoom class meetings also require a webcam and microphone. A reliable broadband internet connection is required for students engaging in any of the remote delivery components for this course. The tests and exams will be require a laptop as well.

Additionally, there are rules with regards to electronics in class that you are required to observe not only as a courtesy to your classmates but also to assure that you have the best opportunity for a positive learning experience:

  1. Laptop, phone, and alarms MUST be set to mute or off before the start of class.
  2. All social media sites, games, etc. MUST be turned off during class. If you engage in unauthorized communication or entertainment during class (e.g. surfing the web, instant messaging, playing games, etc.), you will be asked to close your laptop. If this activity occurs during an exam or quiz, it constitutes academic dishonesty (see following).
  3. The use of earphones is prohibited during class at all times.

Academic Integrity

Unless specified otherwise, all work for this course must be completed on your own. It is acceptable to discuss topics you do not understand with other students in the class, but do not discuss the specifics of any assignment or share assignments. Any specific questions regarding the assignment should be directed to the instructor or TA for the course.

“As members of the Clemson University community, we have inherited Thomas Green Clemson’s vision of this institution as a “high seminary of learning.” Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form.”

Academic integrity is taken very seriously. The University’s Academic Integrity Policy is here. Unless otherwise instructed, you are expected to work independently on projects and labs. The instructor may use automated tools to look for similarities in code which could indicate plagiarism. Instances of copying or sharing, or cheating in any way will result in an academic dishonesty charge, which can lead to an F in the course or expulsion from the university. Each student is responsible for protecting his or her files and work from access by others. Work that is essentially the same and submitted without proper attribution is considered to be a violation of academic dishonesty policies by all those submitting the work, regardless of who actually did the work.

Lack of knowledge of the academic honesty policy is NOT a reasonable explanation for a violation.

Publicly available sources for code or other material, in small amounts, may be freely used if appropriately attributed. A good rule of thumb: when in doubt about whether the use of small snippets of code not your own in a programming assignment or lab assignment, is allowed, or other questions related to assignments or the academic honesty policy, ASK the instructor or lab ta.

For this course, it is considered cheating to do any of the following:

  • discuss in detail the code in your program with another student (other than the instructor or lab TAs)
  • showing, sharing or using code between your program with another student or any other unauthorized source, either modified or unmodified (each student is responsible for protecting his or her files from access by others)
  • use reengineering tools
  • submit work of others, from the Internet or any other source, even if attributing the work to others
  • use unauthorized aids such as the textbook or other individuals on exercises, quizzes, or exams

If it is determined that you have cheated, the consequences will be substantial, ranging from -100 on the assignment to an automatic F in the class.

Homework Exercises (30%)

There will be homework exercises throughout the semester. Some will be in the form of Canvas review quizzes; some may be small programming assignments. Details for each one will be announced and posted on Canvas. There may be one bigger programming assignment given towards the end of the semester. The resulting individual weights of each homework item will be determined based on the number and types of homework items.

Depending on the influx of last minute questions, I may not be able to answer all questions sent within the 24 hour period before the assignment is due.

If there are programming assignments, please get started early and take advantage of the TA’s office hours that are offered. Late submissions will not be accepted.

NO emailed assignments will be accepted. It is best to complete and submit an assignment early rather than risk last-minute complications.

Lab (10%)

The lab sections for this semester are:

  • 1: CRN 80611    8:00 am –   8:50 am TTh Barre B108
  • 2: CRN 80615    9:30 am – 10:20 am TTh Barre B108
  • 3: CRN 86660  11:00 am – 11:50 am TTh Barre B108
  • 3: CRN 80618  12:30 pm –   1:20 pm TTh Barre B108
  • 3: CRN 90986    2:00 pm –   2:50 pm TTh Barre B108

Unless otherwise instructed by your lab ta, attendance at every lab session is expected and REQUIRED. Also, you must pass the lab in order to pass the course.

Labs for this course will start the week of August 26th, with the first lab meeting on Tuesday, August 27th. More lab details and lab syllabus information will be given at the first lab meeting.

In-Class Exercises and Participation (15%)

There will be some in-class activities and graded exercises: some will be peer instruction activities, some may be on paper, some may be on Canvas. Many times, these are recall types of questions making sure that you are keeping up with the material posted on Canvas prior to coming to class. Attendance is required for these. A grade of zero will be given to those who are absent, do not sign in to the checkin.cs.clemson.edu page within the attendance sign-in window, or do not complete them. There are NO make-ups for any of these activities. The three lowest grades will be dropped, however, so if you miss one or two, those will be the grades dropped.

Tests (15% each)

There will be two tests during the semester given on Canvas, tentatively given on or around September 30th for the first one, and on or around December 2nd for the second one. The exams will use Respondus Lockdown browswer.

These Canvas exams are prescheduled. If you are late starting you will not be given extra time to complete the exam.

Each exam will be cumulative and will cover topics discussed in both lecture and lab. I do not teach to the exam; I ask questions related to the material taught expecting that you will be able to apply what was taught to answer the questions. Writing exams is time intensive, and therefore, I do not do a formal exam review. I will post an outline of the topics that have been covered. It is suggested that you review all posted notes and notes that you have taken, posted slides and materials, and example code posted or in the book, as well as all of the review exercises on Canvas. If you attend class, practice with code outside of class, and ask questions regularly, along with reviewing the material, you should have no problem with the exams. I recommend putting together study groups.

Attendance is mandatory on exam days. A missed exam due to an unexcused absence will receive a grade of zero (0). Because writing exams is time intensive, I do not give makeup exams. If you must miss an exam for a university approved event, you must inform me at least one week in advance and you must have a university issued letter. Upon your return, we will come up with a plan for the missed exam.

If you miss an exam due to medical issues, you must contact me PRIOR to the start of the exam. Written documentation from a doctor showing the date(s) of your visit and stating that you are unable to attend class the day of the exam will be required. Upon recovery, we will discuss a plan on how to handle the missed exam. One possibility is to replace the grade of an excused absence from an exam with the grade that you get on the final exam.

There will be an opportunity to replace the grade of either of the regular exams with the grade of part 1 / part 2 of the final if the grade on part 1 / part 2 is better than the regular exam grade. This only applies if you were present for both of the exams and does not apply to an unexcused absence from an exam.

If the University cancels classes on the day of a scheduled exam, the exam will be rescheduled.

Final Exam (15%)

The final exam will be cumulative. You may be able to exempt the final if your overall grade by the end of the semester is an A, AND you did not miss either of the other 2 exams.

This semester, the final exams will be:
section 001 Thursday, December 12th from 11:30 am – 2:00 pm
section 002 Friday, December 13th from 8:00 am – 10:30 am

Grading

Performance in this course will be evaluated by homework programming assignments, lab, in-class participation and exercises, and exams, computed as follows:

Grading Grading Scale
Homework Assignments 30%
Lab 10%
In-Class Exercises & Participation 15%
Tests 30% (15% each)
Final Exam 15%
90 – 100 A
80 – 89.999 B
70 – 79.999 C
60 – 69.999 D
Below 60 F

These percentages are tentative. I reserve the right to adjust the percentages within each category by up to 20%.

Grade Appeals

Grade reports for each programming assignment are provided on Canvas. After receiving the grade and reading the comments in the grade report, if you have a grade dispute, hold off on emailing me (or lab TA) for 24 hours; no grade will be discussed with students within 24 hours after the graded work has been returned to students. After that “cool off” period, any grade challenges regarding assignments, (or exams), etc. must be emailed to the instructor with the subject “1010 homework#1 or exam# regrade request”, with detailed justifications, within one week of the date the grades are available. After the one week period, no re-grade requests will be entertained. In most cases, re-grade requests for assignments will be performed towards the end of the semester if a change in the assignment grade would facilitate a change in the overall course grade. Please note: for re-grading of assignments, the instructor will completely re-grade the assignment which could result in a lower overall grade.

Syllabus Modifications

Lecture topics are subject to change. Course delivery is subject to change as well. The course syllabus is a general plan for the course. Deviations announced to the class by the instructor may be necessary. Deviations will be announced verbally in class and posted via an announcement on Canvas.