CSC 230-001 S26 Syllabus

NC State - Spring ‘26 - CSC 230-001

Course Title: C and Software Tools
Time/Place: Mon/Wed 1:30 - 2:45 PM in 218 111 Lampe Drive
Text: C Programming: A Modern Approach 2nd Edition by K.N. King
Course Website: https://wolfware.ncsu.edu/
Prerequisites: CSC 216 with a C or better and CSC or CSU Majors and Minors.

Instructor: Dr. Caio Batista de Melo
Office Hours: Tue 10:00 AM - 1:00 PM at Lampe 242C
Office: Lampe 242C
E-Mail: [email protected]
Teaching Assistants:

  • Yi Hu (yhu34)
  • Tristan Chance Mullins (tcmullin)

Course Help and Communication

To get help with homework, projects, or course material, please use the message board. You may email the instructor and TAs directly at [email protected] Limited help will be available during weekend hours so please start early on the projects and try to have your questions answered Monday - Friday. A member of the teaching staff will respond to an email or EdStem post within 24 hours on a business day and within 48 hours on a weekend or holiday.

Please be courteous and clear when communicating via email. Identify your course, section, and concern in the subject line. For example: "CSC230-001 - Project 1 Question". The tone of your email message should be professional and closed with your first and last name. Please use Reply All when responding to an email that includes the teaching staff or the teaching staff mailing list. If you have a question that is beyond the scope of an email, please come to office hours or schedule an appointment with a member of the teaching staff.

Course Outcomes

Upon successful completion of this course, a student will be able to...

  1. Compilation: implement C programs using the C standard library, with separately-compiled modules; explain the steps of compilation; identify and fix errors that happen during compilation and execution.
  2. Language: write, debug, and modify C programs using data types, control structures, operators, library utilities, and variables, including scope in a single function, across multiple functions, and across multiple modules.
  3. Assembly language: describe and explain a small subset of assembly language sufficient to illustrate implementation of C features like the switch and goto statements, accessing parts of the stack frame and accessing fields in a struct.
  4. Numbers: add and subtract unsigned and signed, two's complement binary integers and convert among standard types including bases 2, 10, and 16; describe 16-bit and 32-bit IEEE floating representation and its consequences for rounding error, and convert between these formats and decimal.
  5. Memory and Representation: use functions and basic data structures involving arrays, structs, pointers, and function pointers; allocate and deallocate memory in C programs while avoiding memory leaks and dangling pointers.
  6. Tools: utilize software development tools to implement, test, build, and trace C programs including, build automation, version control, static analysis, and dynamic analysis tools.
  7. Security: describe and demonstrate how to avoid common programming errors that lead to security vulnerabilities, such as buffer overflows and injection attacks; describe security properties provided by cryptographic "primitives" (e.g., symmetric cryptography, asymmetric cryptography, and cryptographic hash functions).

Course Requirements

There will be required attendance, 4 programming homeworks, a final project, daily exercises, 2 tests, and a final exam.
  • Attendance: Students must come to class on time and stay until the end of class in order to receive credit for that day's attendance. This class will utilize a "lecture/lab" format in which there will generally be time after lecture to work on exercises and projects. Please bring your laptop to class to work on course work. If you do not have a laptop, please bring the text book to work on the readings listed on the schedule. Attendance points will be awarded based on participation on tophat activities during class.
  • Programming Homeworks and the Final Project: Homeworks will vary in the number of points with easier homeworks being worth less and more difficult or extensive homeworks and the final project worth more. The overall project grade will be calculated by dividing the number of points earned on the homeworks and final project by the total number of points. The first programming homework will be submitted electronically. Subsequent programming homeworks and the final project will be submitted by pushing to your NCSU GitHub repo. Programming homeworks and the final project may be submitted up to 24 hours late with a 10% penalty and up to 48 hours late with a 20% penalty. Programming homeworks and the final project will be accepted late without a penalty only with an official university excuse. The semester project will be due on Friday, April 24.

    You are expected to submit your Homework 1 files to Moodle and push your Homework 2 - 4 and Semester Project files to github regularly starting when the assignment is first posted. This will provide you with a backup and document your continuous work on the assignment, which is expected if you request an extension.

    It is your responsibility to ensure that your Homework 1 files were successfully submitted to Moodle and that your Homework 2 - 4 and Semester Project files were successfully pushed to the remote github repo by the due date/time.

    You are expected to work on assignments and complete them prior to university events such as travel for athletics, organizations, conference, Park Scholars, etc. An extension on an assignment will be granted only for a documented, official university excuse, providing you have exhibited continuous work on the assignment beginning when the assignment was first posted.

    When an assignment has been graded, you’ll receive a write-up telling you your score on each part of the assignment, and letting you know where you lost points. Different parts of the assignment are graded by different members of the teaching staff, and your feedback sheet should tell you who was responsible for grading each part.

    If you believe an error has been made in grading a project, submit a regrade request using the Regrade Form for Projects link found on the course Moodle page.

    Students have one week to request a regrade on Homeworks 1 - 4. The one-week regrade period starts the day a graded homework is returned. Usually, homework grades are returned online (between class meetings). The time to request a regrade on the Semester Project will be less than one week and will be announced when the Semester Project grades are posted.

  • Daily Programming Exercises: To give you practice with programming in C, a small daily programming exercise or a Moodle quiz will be assigned each day of class. You must submit the exercise by the due date/time in order to receive credit for that day's exercise -- exercises will NOT be accepted after the due date/time. These exercises will be submitted electronically. Please check the submission date/time for each day's exercise as these may vary. Exercise 23 will be due on Monday, April 20 and Exercises 24 and 25 will be due on Monday, April 27.
  • NOTE that the programming exercises are graded by a script and your program output must be exactly what is expected. If you believe your exercise was graded incorrectly and you are sure your program output exactly matches the expected output and your program exit status is correct, you may submit a regrade request using the Regrade Form for Exercises link found on the course Moodle page.
  • Tests: Missed tests and exams cannot be made up without an official university excuse.
  • Regrades: All tests, projects, and other assignments must be turned in for regrading within 1 week of when they were first passed back or the grade made available, except for the last project which must be turned in for regrading by the time specified when the grade is posted.

Final Grade Calculation

Final grades will be calculated as follows:

      Attendance (i.e., Top Hat)2%
      Daily Programming Exercises 14%
      Programming Homeworks 26%
      Semester Project 12%
      Test 1 13%
      Test 2 13%
      Final exam 20%

Final Grade Assignment

Final grades will be assigned to students using the following scale where X is your overall weighted average accumulated on daily programming exercises, projects, tests, and the final exam. Grades will be rounded to the nearest tenth of a point to calculate the final average.

Range Letter Grade

97.0 <= X

A+

93.0 <= X < 97.0

A

90.0 <= X < 93.0

A-

87.0 <= X < 90.0

B+

83.0 <= X < 87.0

B

80.0 <= X < 83.0

B-

77.0 <= X < 80.0

C+

73.0 <= X < 77.0

C

70.0 <= X < 73.0

C-

67.0 <= X < 70.0

D+

63.0 <= X < 67.0

D

60.0 <= X < 63.0

D-

X < 60.0

F

To get a grade of AU, you need at least a 50% average.

To get a grade of CR, you need at least a 70% average.


Standards

Your programming exercises and projects must compile and run on the CSC 230 Common Platform. Projects must follow the CSC 230 Coding Style and Submission Guidelines.

Student Concerns

You must inform your instructor as soon as possible of anything that may prevent you from completing course work and exams as well as any other concerns that you may have. You must inform your instructor as soon as you submit an Absence Verification request - do not wait until the Absence Verification has been approved.

Student Conduct

Students who disrupt the instructor's teaching or the learning of fellow students will be asked to leave the class and will be reported to the Director, Office of Student Conduct.

Academic Integrity Statement

The instructor of this course is committed to upholding the University policy on academic integrity, described in the Code of Student Conduct , which can be found at: https://policies.ncsu.edu/regulation/reg-11-35-05-code-of-student-conduct/. Any suspected case of academic dishonesty will be reported to the Director, Office of Student Conduct.

An Academic Integrity Violation is a serious offense that may affect scholarships, participation in university programs and activities, admittance to graduate school, and transfer to other universities.

Tests: Students will be required to sign the honor pledge on each test: "I have neither given nor received unauthorized aid on this test".

Daily Programming Exercises: Your work on the daily programming exercises must be solely your own, but may incorporate code provided by the instructor.

Projects: Your work on the programming projects must be solely your own! However, you may use code provided on the CSC 230-002 website or our textbook website where appropriate, but you must use comments to identify the parts of your programs obtained from these sources to avoid charges of plagiarism.

Do NOT seek help with a project from anyone other than:

  • CSC 230 Instructors
  • CSC 230 TAs

Do NOT seek help with a project from online message boards/coding help sites, such as Stack Overflow, homework help sites, such as chegg or Course Hero, AI tools, such as ChatGPT, or anywhere else online other than the CSC 230 Message Board!

Do NOT post your project code online or in public Message Board posts!

Do NOT attempt to circumvent the accurate recording of class attendance for yourself or another student!

All of the above are Academic Integrity Violations. Posting your code online constitutes "aiding and abetting cheating or plagiarism" because other students will have access to your code! You must also take other reasonable precautions to prevent the use of your work by other students. These precautions include locking or logging off your lab computer/personal computer when unattended, restricting access to your files and personal computer/laptop, keeping USB drives in your possession at all times, and disposing of program listings privately. Failure to take these precautions will result in charges of "aiding and abetting cheating or plagiarism." Compliance will be monitored by the MOSS software, which is very good at detecting similarities in programs, and has been used in the past to successfully detect cheating.

Supporting Fellow Students in Distress

As members of the NC State Wolfpack community, we each share a personal responsibility to express concern for one another and to ensure that this classroom and the campus as a whole remains a safe environment for learning. Occasionally, you may come across a fellow classmate whose personal behavior concerns or worries you. When this is the case, you are encouraged to report this behavior to the NC State CARES website. Although you can report anonymously, it is preferred that you share your contact information so they can follow-up with you personally. Please also see the NC State Emergency Preparedness information.

NC State Policy on Working with Students with Disabilities

``No otherwise qualified handicapped individual in the United States. . . shall, solely by reason of his handicap be excluded from participation in, be denied the benefits of, or be subjected to discrimination under any program or activity receiving Federal financial assistance.'' Please consult instructor as soon as possible to arrange for any accommodations which may be necessary. For further information, consult: http://policies.ncsu.edu/regulation/reg-02-20-01