Skip to main content

CSC 216 Software Development Fundamentals - Syllabus

All CSC 216 Sections

Spring 2026

3 Credit Hours


Instructor Information

Instructor: Dr. Chandrika Satyavolu
Role: Section 001 & 002 Instructor
Email: jsatyav@ncsu.edu
Web Page: https://csc.ncsu.edu/people/jsatyav/
Office Location: EB2 2272
Office Hours: (Posted on Moodle page and Google Calendar)


Instructor: Dr. Sarah Heckman
Role: Course Coordinator and Section 003/601 Instructor
Email: sarah_heckman@ncsu.edu
Web Page: https://sheckman.github.io/
Office Location: EB2 2299
Office Hours: (Posted on Moodle page and Google Calendar)


Instructor: Mr. James Tetterton
Role: Section 601 Instructor
Email: jctetter@ncsu.edu

Office Location: online
Office Hours: (Posted on Moodle page and Google Calendar)


Office Hours

See the CSC 216/217 Office Hours Calendar for the most up to date office hours for the course.

Preferred Method of Communication & Response time

The teaching staff is looking forward to answering questions that you may have about CSC 216. Please use the following to help identify how best to interact with the teaching staff:

We (the instructors and Teaching Assistants (TAs)) batch answering questions on the course forum and to the support email list several times throughout the day. You can expect to receive a response to emails to the instructors within two business days (i.e., not over the weekend).

Course Information

Course Description

The second course in computing, intended for majors and minors. Emphasis is on exploring encapsulation; polymorphism; composition; inheritance; finite state machines; linear data structures [including array lists, linked lists, stacks, queues, and the tradeoffs in implementation]; and recursion [including recursive linked lists] in the context of the software development lifecycle including the processes and practices for designing, implementing, and testing high quality software.

Course Meetings

Section 001

Meeting Days: Mondays + Wednesdays
Meeting Time: 8:30 am - 9:45 am
Location: Textiles 2211
Instructor(s): Dr. Satyavolu Section 001 Schedule

Section 002

Meeting Days: Mondays + Wednesdays
Meeting Time: 11:45 am - 1:00 pm
Location: EB3 2207
Instructor(s): Dr. Satyavolu Section 002 Schedule

Section 003

Meeting Days: Tuesdays + Thursdays
Meeting Time: 11:45 am - 1:00 pm
Location: EB3 2207
Instructor(s): Dr. Heckman Section 003 Schedule

Section 601

Meeting Days: Asynchronous

Location: Online
Instructor(s): Dr. Heckman and Mr. Tetterton Section 601 Schedule

Co-requisite: Lab (CSC 217)

Students are required to enroll in a CSC 217 lab section if they do not already have credit for it. While the two classes are interconnected, they have separate syllabi, schedules, and assignments.

Days: Mondays, Tuesdays, Wednesdays, or Asynchronous
Time: Varies by lab section
Location: Synchronous sections in EB II, Room 1221. Asynchronous sections have no meeting place/time.

Meeting Notes

Students are required to enroll in one CSC 216 lecture section and one CSC 217 lab section if they have not already completed CSC 217.  Each synchronous lecture section is 75-minutes. Students in asynchronous lecture sections are expected to watch the videos and complete their work independent of class meeting times.

Discuss your situation with CSC advising before dropping either lecture or lab section!

Prerequisites/Co-requisites

Prerequisites: CSC116 with a C or better

Co-requisites: CSC 217

Minimum Technical and Digital Information Literacy Skills

Required Technical Skills

  • Navigate and use Moodle, NC State’s Learning Management System.
  • Use Gmail, including attaching files to email messages
  • Create and submit files in commonly used word processing program formats (MS Word, text editors, Google Docs).
  • Download and install software as needed (see section on required software)
  • Download and upload attachments
  • Use spreadsheets, presentations, graphics programs, and other applications in digital environments
  • Use web conferencing tools including Zoom and Google Meet.
  • Post to discussion boards and forums

Course Structure

Lecture

Sections 001, 002, and 003 will be offered in-person. Lectures may be recorded, but your lecture instructor may not provide videos right after class.

Students in Section 601 participate in class asynchronously. The lecture videos will be linked in on Moodle.

Lecture Meetings

Each lecture will contain several exercises that consist of conceptual questions or short programming tasks. Assigned exercises should be completed during class time unless otherwise noted by your instructor (not all exercises for a lecture may be opened and assigned). Students in class will have the opportunity to complete the exercises with their neighbors. If you work on an exercise with a group, you only need to submit one exercise per group. The person submitting the Google form should ensure that all team member unity ids are recorded in the exercise form.

For students in Section 601 who participate asynchronously, you will complete the exercises as you watch the lecture videos. To keep pace with the course, the exercises should be completed by the following Sunday at 11:45pm. Students participating asynchronously are welcome to work on the exercises with other students in the class and are welcome to form study groups or lecture watch parties. Students participating asynchronously are encouraged to create a weekly schedule for their CSC 216/7 work to keep on track.

Lecture Attendance

Attendance is required for students in Sections 001, 002, and 003. Attendance will be tracked through Moodle. You must be present in the classroom when the attendance code is shown to record you attendance for a lecture session.

See the Attendance Policy section for more details about how lecture attendance factors into your final semester grade. 

Significant absences that include hospitalization, extended illness, hardship, or significant life events should be discussed with the instructor as per the Attendance Policy. Please be proactive with these discussions. Waiting until the end of the semester significantly decreases the options available.

Labs

You are expected to enroll in a section of CSC 217 - Software Development Fundamentals Lab, which is a co-requisite for CSC 216. Details about the lab will be found in the CSC 217 syllabus. If you have already passed CSC 217, you do not need to enroll in CSC 217 again.

Guided Projects

An important aspect of CSC 216 is using software engineering best practices and the tooling that supports the best practices to deliver high quality software that meets system requirements. To introduce you to the software engineering lifecycle, best practices, and course tooling, you will complete three Guided Projects.  The Guided Projects integrate pieces of guided practice with independent activities. The Guided Projects will build on each other and will integrate into the lab activities for those enrolled in CSC 217.

Programming Projects

There are 2 programming projects this semester. Each project is broken into 2 parts with deadlines (including milestones) most weeks.  Part 1 will be a design and system testing phase and Part 2 will be an implementation, unit testing, and system testing phase.  All project deliverables must be submitted electronically by the due date and follow the specified formats, submission instructions, and naming conventions. Each project write up will specify the specific submission instructions for the project.

Part 1

For Part 1 of each project, you will be given a set of requirements that describe a software system.  From the requirements, you will develop a design proposal and rationale document that describes a design for implementing the requirements or compares two alternative designs.  Additionally, you will develop a system test plan that will contain tests to validate that the future implementation meets the requirements. The Design Proposal and Rationale and System Test Plan will be submitted via Gradescope.

Part 2

For Part 2 of each project, all code for the project will be submitted to NC State’s GitHub to an instructor provided repository. We will be using a continuous integration program, Jenkins, to automatically compile and test your program (both with your tests and with the teaching staff tests) and provide style feedback.  Your grade for Part 2 of that project will be calculated from the last GitHub submission you make before the deadline (even if Jenkins runs after the deadline for that submission) plus additional points for acceptance tests and other related rubric items.  The style deductions as derived from Jenkins feedback may be modified by the teaching staff when manually inspecting your comments. For programming portions of the projects, use of the Eclipse Integrated Development Environment (IDE) is required. You will validate your project with the system tests developed in Part 1. The teaching staff will also run system tests on your final project.

Each project will have process point deadlines, which are milestones to keep you on task with the project. The process points will be built into the project grade and have no late windows.

Project Collaboration

Part 1 of all projects will be completed individually.  Part 2 of Projects 1 and 2 will be developed individually or in an optional pair (or maybe a team of three for an odd number of students) at the instructor’s discretion.  Students will be eligible for participation in a team for a Part 2 only if they submit all deliverables for Part 1 of the project.

Students who work on assigned teams for a Part 2 of a project will have their contributions evaluated. Unequal contributions may lead to a grade adjustment on the Part 2 grade.

Academic Integrity

All Guided Projects and Projects are to be your own work (for paired and team assignments, all work is to be you and your assigned partner’s or assigned team mates’ own work). See the Academic Integrity section of the syllabus for further details. For each paired/team project, a peer evaluation will be required after the project’s submission.

Late Guided Project & Project Submissions

All Guided Projects and Projects (except Design Proposals and Rationales for Part 1 of Projects) will be accepted up to 48 hours late through the appropriate submission system. Part 1 Design Proposals and Rationales will only be allowed late until 9am the day following the deadline.

You will lose 1 point every 2 hours the project is late, up to 24 points

No submissions will be accepted after the late window without a university excused absence as approved by the instructor. No submissions will be accepted through email.

Project Part 2 process point deadlines will not have late windows. For Part 2s, the late deadline only applies to the final deadline for the project.

Exams

There will be three exams; two during the semester and one 2.5 hour final during the final exam period. These exams will cover all materials (readings, lectures, guided projects, projects, guest speakers, etc.) prior to the exam. All exams will be cumulative appropriate to the materials covered prior to the exam date. The final exam will be cumulative for the entire course.

Exams test each student’s knowledge on course learning outcomes.  Problems during the exam may build on a programming scenario.  The exam may require writing a class or several methods of code, designing a system using UML, interpreting a UML diagram, designing a finite state machine, tracing code, etc. 

The exam dates are posted in the schedule for the course and will not change unless there is a significant university calendar change. If you miss an exam, documentation of a university excused absence will be required to arrange a makeup exam. Any exam absences must be discussed directly with the instructor.

Exams will be in-person, paper exams.

Students in Section 601 must arrange proctoring service through Engineering Online for all exams.

Extra Credit

Students may have the opportunity to earn 1 point on each of their Exam 1 and Exam 2 grades by completing extra credit opportunities.

You have two options:

  • Participate in a computer science research study as approved and announced by the instructor
  • Attend a computer science seminar and record a 1 minute response video

Participation in one of these activities will result in 1 point on Exam 1. Participation in a second activity will result in 1 point on Exam 2. You can participate in two different research studies, two different seminars, or one of each.

Computer Science Research Study

The instructors will share research studies that students are eligible to participate in via the course forum. The student will work with the researcher to complete the study. The researcher will share the participant names with the instructors for extra credit after completion of the research activity.

The approved research studies consider additional work beyond the classroom. Any research studies of the class itself and your work within the normal class framework are not eligible for extra credit research studies. Research studies that are an anonymous survey will also not be eligible (b/c anonymous).

Computer Science Seminars

The instructors will share information about seminars hosted by the Department of Computer Science. Students will attend the seminar and then submit a audio and/or video between 1 and 2 minutes summarizing the seminar to the submission locker on their CSC 216 lecture Moodle. The video should be submitted within one week of the seminar. If there are fewer than 10 seminars in a given semester, the instructors will provide online videos as alternative source for seminar attendance towards the end of the semester.

Time

You are expected to spend, on average, 8 to 10 hours per week outside of class preparing and working on assignments.  In some weeks, especially those around project deadlines, you may spend more than 10 hours on course work.  Please plan and use your time wisely.  Do NOT wait until the last minute to complete programming projects!!! There are two project work days built into the schedule to provide class time and PTF support for answering questions that you may have about the projects.

Learning Outcomes

  1. Describe the utility of inheritance, abstract classes, interfaces, and polymorphism in object-oriented systems, and design, implement, and test programs which use these language features;

  2. Identify the phases of a simple model of the software life cycle, and employ these phases in developing software;

  3. Describe basic design modeling techniques, including UML class diagrams and simple design patterns (e.g., model/view/controller), and indicate how and when to use them;

  4. Identify and compare the basic kinds of software testing, describe when to use each method, and design and implement test code;

  5. Navigate and extract information from the Java API, and employ the Javadoc tool to construct internal documentation of source code;

  6. Use software engineering best practices like pair programming, test-driven development, code coverage, static analysis, version control, continuous integration, and documentation with supporting tooling to design, implement, and test object-oriented systems.

  7. Design, implement, and test a finite state machine;

  8. Identify when recursion is useful, and design, implement, and test recursive algorithms and simple recursive data structures;

  9. Implement, test, and use a stack, queue, array-based list, and linked list.

Course Materials

Textbooks

No textbook is required.

The following textbook is optional. (We list is as required so it is included in Course Ready. It’s a good resource for additional practice, but we will not count any ZyBooks work in your CSC 216 grade. If you have Course Ready, take advantage of the textbook. If you don’t, it’s up to you if you would like to use the book.)

If you are part of Course Ready (all your textbooks are covered under that item in your tuition bill) use the link on Moodle to access the ZyBook.

If you want to pay for the ZyBook, use the following:

ZyBooks for CSC 216

  1. Sign in or create an account at learn.zybooks.com
  2. Enter zyBook code: NCSUCSC216Spring2026
  3. Subscribe

Technology Requirements

NC State University Libraries offers Technology Lending, where many devices are available to borrow for a 7-day period. Computer labs are available in various locations around campus for student use.

Students are encouraged to use computers and other electronic devices like tablets during class.  The teaching staff asks that students respect their neighbors and keep their focus on course materials rather than games, social media, etc.  Electronic devices are required for submission of exercises.  If the class is utilizing computers in an inappropriate manner, the instructor reserves the right to require that electronic devices are closed or put away during instruction.

You may not record the lecture or lab without express written permission from the instructor of PTF.

The instructors will record Section 001, 002, and and 003 lectures via classroom capture. All students will have access to the recordings for their lecture section when posted to Panopto and linked into Moodle. Section 601 will be provided recordings by the instructor.

Note that Section 003 will be recorded for videos that will be used by this semester’s Distance Education section (601) and future semesters’ Distance Education sections.

Computer

A laptop computer is recommended for students taking this course. NC State’s Online and Distance Education provides technology requirements and recommendations for computer hardware, and NC State’s Office of Information Technology provides recommendations for your computer at NC State.

Software and Digitally-Hosted Course Components

The following software and tools will be used in this course. Some tools are a part of NC State’s enterprise tools. See information about their purpose, how to access them, accessibility information, and privacy policies. The same information for any other tools required in this course is provided in the list below.

The following materials are electronically-hosted for use by students and teaching staff through a combination of Moodle, Wolfware, Google Docs (through NC State), GitHub, Jenkins, Ed, Gradescope, Zybooks, Zoom, MyDigitalHand, and Typos: lecture notes, message boards, electronic submission & evaluation of assignments, electronic submission of exercises, electronic evaluation of exams and/or quizzes, questions about course materials, and study resources and exercises.

Grading

Grade Components

Component Weight Details
Guided Project 1 4 Guided Project 1 reviews prerequisite materials and introduces you to software engineering best practices and tools.
Guided Project 2 6 Guided Project 2 builds on Guided Project 1 and introduces you to inheritance.
Guided Project 3 10 Guided Project 3 builds on Guided Project 1 and 2 and introduces you to exceptions and testing. Guided Project 3 is worth the most since it represents the finished assignment and you have to finish GP1 and GP2 for success in GP3.
Projects 42 There are two projects. Each project consists of 2 parts. Part 1 is a design and black box test planning phase. Part 2 is an implementation and testing phase.
Part 1 of projects are 20% of the project grade and Part 2 of projects are 80% of the project grade. The lower project grade may be weighted less to reduce impact to the final grade based on improvement over the semester.
Exam 1 12 Exam 1 will cover material from approximately the first third of the course.
Exam 2 12 Exam 2 will cover material from approximately the first two-thirds of the course.
Exam 3 14 Exam 3 will cover all materials for the course.

Grades may be adjusted in the following ways:

  • Absence Penalties: If you miss more than 6 lectures (as recorded by not completing Moodle attendance checks), a 1 point penalty will be applied to your final semester grade for each absence over the 6 allowed absences. See the Attendance Policy section for more details.
  • Academic Integrity Violation (AIV) Penalties: AIV penalties may be applied to the grade item itself or to the final grade depending on the situation and gradebook setup.
  • Contribution Adjustments: If you are working on an assigned team for a Part 2 of a project, there may be an adjustment to the Part 2 grade for unequal contribution to the team.
  • Minimum Grade Requirements: To earn a passing grade, you must demonstrate a minimum level of performance on the projects and the exams.

Minimum Grade Requirements

In order to pass the course with a letter grade, assuming a letter grade is earned, you must have a 60+ weighted average on the EXAMS, and you must have a 60+ for your PROJECT programming assignments (where the Project Grade is calculated as described in the Project category, below).

In order to pass the course with a C or better, assuming a C or better is earned, you must have a 65+ weighted average on the EXAMS, and you must have a 65+ weighted average on the overall programming PROJECT assignments grade and GUIDED PROJECT grades.

Letter Grades

This Course uses Standard NCSU Letter Grading:

         
97 A+ 100
93 A < 97
90 A- < 93
87 B+ < 90
83 B < 87
80 B- < 83
77 C+ < 80
73 C < 77
70 C- < 73
67 D+ < 70
63 D < 67
60 D- < 63
0 F < 60

Requirements for earning a grade of “Satisfactory”

In order to receive a grade of S, students are required to attempt all assignments and earn a grade of C- or better. Conversion from letter grading to credit only (S/U) grading is subject to university deadlines. Refer to the Registration and Records calendar for deadlines related to grading. For more details refer to http://policies.ncsu.edu/regulation/reg-02-20-15.

For students taking CSC 216 Credit-Only, a grade of S will only be recorded if 1) the minimum grade requirements are met and 2) a grade of 70 or higher is earned. Students who do not meet the minimum grade requirements with will receive at most a 69 in CSC 216.

Course Policies

Resources for Online Participation (Section 601)

When using an online course format, you may need to adapt your learning strategies and study skills. The NCSU Academic Counseling center offers resources on developing and adapting study skills. In addition, when completing coursework remotely (see Engineering Online Tips for Success):

  • With online education, there is an even stronger need for self-discipline than when taking on-campus courses.
  • The responsibility to “attend” class is completely up to you. While this time flexibility is one of the great features of online education, it is also one of the biggest opportunities to get behind in your studies.
  • Without a regularly scheduled in-person class, it is easy to think you have all the time in the world. This can leave you with mountains of work to do as deadlines approach.
  • You must be able to manage your time well.

NC State has provided several resources to help you move to online learning.

Professionalism

Students are expected to conduct themselves in a respectful and professional manner at all times. Students are expected to act professionally both in person and electronically with all members of the teaching staff and their classmates. Communication, both written and verbal, should be respectful and should never include derogatory comments about yourself or others. All criticism (of yourself, the course, instructor, PTFs, fellow students, resources, etc.) should be constructive and provide feedback for improvement. Guidelines for electronic communication are listed in the section below.

Professionalism also includes attendance and participation. Follow the attendance guidelines as provided for when and how to communicate absences. If you have a missing or non-communicating teammate, please notify the teaching staff as soon as possible.

Report any unprofessional behavior by a class member (including the PTFs) to the instructor.

Unprofessional electronic communication on course forums may result in suspension from the course forum and possible grade penalties. Unprofessional in-person behavior, including a lack of participation, will result in a conference with the instructor and possible grade adjustments for all involved parties.

Electronic Communication

The teaching staff looks forward to receiving emails and message board posts about any questions you have about the class, materials, and assignments.  Below are several rules for electronic communication.

Higher education provides you with a training ground prior to entry into the work environment for your chosen career.  You will use many of the following rules for electronic communication when you are communicating with colleagues, your supervisor, or clients once you are in the work world.  Although many of the rules of etiquette for electronic communication will be similar in the work environment, we have some specific to this course.

Please observe the following etiquette when communicating with the teaching staff and your peers.  The teaching staff receives many emails on a daily basis and the instructor teaches several courses.  Please note that a member of the teaching staff will typically respond to an email or message board within 24 hours on a business day and within 48 hours on a weekend or holiday.  Most of the time, we will respond more quickly, but it is not guaranteed.

Also, before sending an email, try to find the answer to the question by using various references already available to you:

  • If the question is related to class administration, check the syllabus.
  • If the question is related to recent information, check the weekly emails or Piazza posts from the teaching staff.
  • If the question is assignment related, check the message board to see if it has already been answered.  Also, read your textbook.

For emails, please identify your course, lecture and/or lab section, and your name in the subject line (first and last name) along with the subject of the message.  For example: “CSC216-002 Jenny Howard - Question about Project 1 Part 1”.

Email should include a salutation to identify the recipients of the email.  For example, begin an email to your instructor with a salutation such as “Hi Dr. Heckman,” or “Dr. Heckman”.  For emails to the sup list, consider a salutation like “Greetings Teaching Staff,”.  You now have the attention of the email recipients.

The tone of the email message should be professional.  Re-read your email before you press Send and make a judgment as to how you would respond if you were a recipient of the email you are planning to send.

If you have a question that is beyond the scope of an email, consider coming to office hours or scheduling an appointment with a member of the teaching staff. 

If you have several questions or items, please number them for ease of reading.  The response will also be easier to understand.

Please spell check and correct mechanical/grammar errors.  Avoid emails written only in lowercase and lacking punctuation.

For emails related to absences, include the specific date(s) instead of more relative terms like “last week” or “yesterday”. Due to time zone differences your yesterday may not be the teaching staff’s yesterday.

Close your email with your name.

Please use Reply All when responding to an email that includes the teaching staff or the teaching staff mailing list.

Here are guidelines for how to communicate with the teaching staff:

Grade Appeals

If at any time you feel an assignment was graded improperly, fill out the Regrade Request Form, which is located in the General Course Resources topic on Moodle. The form will email the PTF and the instructors with your regrade request, which will be followed up via email. For full consideration, regrade requests must be submitted to the form no later than 1 week after the assignment was returned to you. If the grade was returned during the final exam period, then you must submit your regrade request before the deadline set by the instructor.

Note that there may be some time between submission of a regrade request and when the regrade request is processed so that teaching staff can batch process regrades for each major assignment.

Incomplete Grades and Withdrawals

Information on incomplete grades can be found at REG 02.50.03 – Grades and Grade Point Average. If you encounter a serious disruption to your work not caused by you and you would have otherwise successfully completed the course, contact your instructor as soon as you can to discuss the possibility of earning an incomplete in the course for the semester, including an agreement on when the remaining work must be done in order to change the grade to the appropriate letter grade.

If you must withdraw from a course or from the University due to hardship beyond your control, see Withdrawal Process and Timeline - Student Services Center for information and instructions.

Late Assignments

There is a 48-hour late window for guided and programming project submissions, except for Design Proposals & Rationales (see full description above).  You will lose 1 point for every 2 hours the project is late, up to 24 points.  No submissions will be accepted after the 48-hour late window without a university excused absence. Process points milestones have no late deadlines.

Exams must be taken during the official exam time as given for your section. Exam make-ups will only be provided with documented university excused absences.

No submissions will be accepted through email.

Attendance

For complete attendance and excused absence policies, please see http://policies.ncsu.edu/regulation/reg-02-20-03

Attendance Policy

As a 200-level class, attendance is expected and required for in-person sections (Sections 001, 002, and 003). Additionally, attendance to lecture has been correlated with success in CSC 216. This ensures that all students are keeping up with course materials so that they can successfully complete the exams, assignments, and labs.

Attendance will be tracked through Moodle. You must be present in the classroom when the attendance code is shown to record you attendance for a lecture session.

You may miss up to six (6) lectures with no penalty.

There are 28 total lectures for the semester. With 2 exams, 2 project workdays, and a Career Center guest lecture, we will be tracking attendance for 23 of the lecture periods. Six lectures is a little over a quarter of the course. If you’re sick, traveling for personal reasons, have car trouble, oversleep, miss your reminder, etc. the absence falls under this policy. No documentation is required or needed. It is your responsibility to keep track of your absences by reviewing the information in Moodle and ensure that you stay within the six absences for the semester.

If you miss more than 6 lectures (as recorded by not completing Moodle attendance checks), a 1 point penalty will be applied to your final semester grade for each absence over the 6 allowed absences.

Significant absences that include hospitalization, extended illness, hardship, or significant life events should be discussed with the instructor (please provide a broad overview of the situation, details are not needed). Absences due to mandated court appearances, required days of religious observance, and participation in an official university function should be emailed to the instructor with appropriate documentation. We’ll initially consider these absences as part of the six allowed, but will review at the end of the semester should you exceed the allowed absences threshold.

For exams and assignment extension requests, the instructor may request that your absence is approved by Absence Verification. Please be proactive with these discussions. Waiting until the end of the semester significantly decreases the options available.

Exam make-ups will only be provided with documented university excused absences. Please email your instructor to discuss your exam absence. If you are sick, please do not come to the exam. Instead, schedule an appointment with the Student Health Center, which will also provide documentation to arrange a makeup.

For Section 601, all lectures are asynchronous so attendance is not tracked. Please watch the lecture and complete the exercises by Sunday at 11:45pm.

Absences Policy

Excused absences are defined in the NC State Academic Policy on Attendance Regulations (http://policies.ncsu.edu/regulation/reg-02-20-03). 

Because of the flexibility of the course, one-off absences to lecture that are not associated with an exam period don’t need to be discussed with the instructor. More significant situations should be discussed, as described above. Attendance is tracked through Moodle check-ins. A maximum of 6 class periods per semester may be missed due to absences.

Should illness, university travel, or other major situations impact assignment deadlines, please email your instructor to discuss. Note that project extensions are not given because of other course load or regular personal obligations (e.g., work, etc.). You need to manage your time and other coursework.

  • Project extensions (typically a waiver of the late deadline) will only be considered on a case-by-case basis.  If the project solution has already been released (in the case of teaching staff designs) an alternative assignment may be assigned. This may be handled as an incomplete.
  • Missed exams will have a makeup exam arranged with the instructor or the final exam may be considered in the missed exam’s place depending on the situation.

All anticipated absences must be presented to the instructor no later than one week before the absence.  All emergency absences must be turned in no later than one week after the student’s return date.  All other absences will be unexcused.

Absence Penalties: If you miss more than 6 lectures (as recorded by not completing Moodle attendance checks), a 1 point penalty will be applied to your final semester grade for each absence over the 6 allowed absences.

Makeup Work Policy

All projects and exams must be made up within the time frame determined through discussion between the instructor and student.  If a project has moved forward in such a way that the missed project cannot be made up, the instructor may request the student to complete an alternative assignment.  No exercises will be made up.

Academic Integrity

Students are required to comply with the university policy on academic integrity found in the Code of Student Conduct found at http://policies.ncsu.edu/policy/pol-11-35-01

All members of the University community, students, faculty and other employees, have the responsibility to report academic misconduct to the appropriate authority.

The Computer Science department uses software that detects cheating violations for programming projects. Do not use other student’s code, do not share your code, do not copy or use code from someone who took the class X semesters ago, do not use code from online. Start on assignments early so that you do not feel tempted to cheat!

All work that you turn in for grading must be your own! This means that all work must be an independent and individual creation by you or in the case of paired/team assignments; all work must be an independent and individual creation by you and your assigned partner or assigned teammates.  Any attempt to gain an unfair advantage in grading, whether for yourself or another, is a violation of academic integrity.  You may only work on an assignment with another student(s) in the class if explicitly stated in the assignment.

Why is Academic Integrity Important?

(Adapted from Matt Stallmann and Mitchell Wand)

Would you want to fly in a plane whose controller software was designed and implemented by a group of people who had never demonstrated the persistence, attention to detail, and ability to deal with feedback from compilers, linkers, etc., that it takes to design, implement, and debug a program on their own? What about a software system that was vibe coded by a developer who doesn’t really understand what the generated code is doing and why the system works?

Academic misconduct affects you, your peers, the CSC department, the university, all students who have ever graduated from NCSU with a CSC degree, and all users of software products to which you contribute. When you receive a degree from NCSU:

  • The degree represents the university’s certification that you have demonstrated certain skills and knowledge in your degree program.
  • Your grade in a course represents the instructor’s certification that you have demonstrated certain skills and knowledge in the specific course.
    When an employer sees your degree from NCSU, they expect you to be able to demonstrate certain skills and knowledge. If a student graduates with a CSC degree and performs poorly, the value and reputation of a CSC degree from NCSU is negatively affected.

In industry, intellectual property rights are crucial in software and product development. Rules regarding intellectual property are similar to rules outlining academic integrity. Employees who “cheat” or violate copyrights or other intellectual property rights can cost the employer large sums of money. In addition, even though you will likely work on a team in industry, completion of the CSC degree program includes demonstrating individual skills so that you can work effectively on teams. For example, students should demonstrate well-developed individual skills, integrity to take responsibility for one’s own work, and the ability to recognize clear boundaries between one’s own contributions and those of others.

Ethics and professionalism are important to the community. The Association for Computing Machinery (ACM), a professional organization for computing professionals, has the ACM Code of Ethics and Professionalism that outlines the ethical principals of the computing community.

What are the Consequences of Academic Misconduct?

Students who commit an academic integrity violation on any course deliverable will receive up to a 0 for the assignment! The instructor reserves the right to increase the penalty to no credit for the course as appropriate for the situation.

All cases of academic misconduct will be reported to the Office of Student Conduct. A first offense will place the student on Academic Probation for the remainder of their academic career. Academic Probation is not visible on a student’s transcript or other educational record, but the Office of Student Conduct does supply this information for various campus agencies running checks for disciplinary standings. If the student is suspended, which will likely happen on a second academic integrity infraction, the Office of Student Conduct may notify many other departments on campus, such as Registration & Records, Housing, Campus Health, Counseling, and Financial Aid. In addition, administrators of some scholarships routinely ask the Office of Student Conduct to confirm whether the student is in good standing.

Resources you ARE Allowed to Use

You must cite your use of the approved resources in your assignment submissions. If you do not cite your use of the approved resources, you may be committing plagiarism.

The only people that you MAY receive help from:

  • your instructor,
  • the PTFs for CSC 216,
  • for paired/team assignments, you may receive help from your assigned partner or your assigned teammates, and
  • for exercises, you may work with others in CSC 216.

The only external resources that you MAY also reference:

  • your textbook,
  • the textbook website,
  • the JAVA API HTML pages, and
  • other third-party API HTML pages as appropriate for an assignment (for example, you may use the JUnit API HTML pages to help you with writing JUnit tests).
  • Generative AI tools as described in the AI Policy. Note that allowed AI usage is restricted to a few specific cases to serve as a learning assistant, not a homework assistant.

Resources you ARE NOT Allowed to Use

  • You MAY NOT receive help from anyone or anything else that is not in the list of approved resources (above).
  • If you think a resource should be added to the list of approved resources (above), you must first receive written permission from the instructor so that the instructor can share the resource with all students.

Examples of Academic Misconduct

Note: this list is not exhaustive.

  • It is unauthorized assistance or collaboration and cheating to give any student access to any of your work which you have completed for individual class assignments.
  • It is cheating and plagiarism to use another person’s work and claim it as your own.  You are expected to complete all assignments on your own, unless otherwise specified in the assignment.
  • It is cheating to interfere with another student’s use of computing resources or to circumvent system security.
  • It is unauthorized assistance or collaboration and cheating to email, ftp, post on the Internet, bulletin boards, message boards, etc. your work for others to obtain OR to have others provide answers. Even if you did not provide the material, using answers to CSC 216/217 assignments posted to sites like Chegg or CourseHero is cheating.  Do NOT use sites that allow you to “anonymously” post code.  Those sites are searchable, and others may find your code (like the teaching staff).
  • It is cheating to ask or pay another person or persons to complete an assignment for you.
  • It is cheating and plagiarism to decompile any compiled code and use the decompiled source code as your own.  You may also break the law by decompiling code.
  • It is cheating and plagiarism to use code that you find online, including code behind the Java API web pages.
  • It is unauthorized assistance or collaboration and cheating to give another student access to your account (NC State account or others that you use for university work) or to give them your account password.
  • It is unauthorized assistance or collaboration and cheating for you and another student to work collaboratively on an assignment, unless otherwise specified by the assignment.
  • It is cheating to circumvent the intention of the assignment and/or the automated grading system (e.g., by hard coding test case solutions, by copying/pasting code provided in the Java libraries to fulfill an assignment objective, to implement extra lines of code to achieve higher statement coverage, etc.).
  • It is unauthorized assistance or collaboration to allow another student to copy from your written or electronic assignment submissions (e.g., it is the student’s responsibility to cover his or her exam answers to help prevent others from copying answers)
  • It is cheating and plagiarism to copy from another student’s written assignment (e.g., exams or homeworks).
  • It is cheating to submit identical or similar assignment submissions from an assignment submitted in a previous course, or a previous attempt of the current course.
  • It is cheating to reuse your code from previous semesters if retaking the course. Start over to focus your learning this semester.
  • It is unauthorized assistance or collaboration to leave your computer unlocked and/or unattended (whether intentional or accidental) such that others could access your assignments.
  • It is cheating to use AI tools or services to generate partial or complete solutions to assessments in the class. AI tools and services should not be used as a starting point that the student will then edit (e.g., do NOT copy parts of the assignment write up into a generative AI tool and ask it to provide a design document, system test plan, implementation code, or unit test code). The allowed use of AI tools is described in the AI Policy.

Examples of NOT Cheating (this list is NOT exhaustive):

  • Using the code from the class website (with citations in the comments).
  • Using code from other programs YOU wrote in this course during this semester (with citations in the comments).
  • Using code from other programs that YOU and a partner wrote as part of assigned exercises in this course during this semester (with citations in the comments).
  • Help from PTFs or instructor(s) (with citations in the comments).
  • Using code from the textbook or textbook website (with citations in the comments).

AI Policy

Ethical Use of AI for Learning

(adapted from: https://provost.ncsu.edu/ofe/wp-content/uploads/sites/2/2023/12/Guide-for-Students-on-the-Ethical-Use-of-AI-Tools-2.pdf, CSC 113 syllabus, and CSC 316 syllabus) To ethically use AI tools or services, students must:

  • Understand capabilities & limitations, as well as terms, conditions, & privacy policies of AI tools.
  • Use AI tools to enhance learning & creativity, not replace them
  • Reflect on the use of AI tools: how did it enhance learning? How did it limit learning?
  • Treat AI tools as secondary source of information.
  • Critically evaluate the output from AI tools for accuracy.
  • Use AI tools only when specifically allowed.

Generative AI tools are programs that create new content, like text, code, or images, by learning from existing data. While these tools are rapidly evolving and will be important in future workplaces, they can either enhance or hinder your learning. If misused to avoid critical thinking, they can lead to mistakes, especially since beginners may struggle to identify gaps, biases, or inaccuracies in AI-generated output.

Therefore, it is important to ensure that AI benefits are targeted at your learning rather than solely at your deliverables. Toward that end, the same academic integrity policy in this class also applies to AI assistance. You are welcome to consult with AI agents just as you would consult with the teaching staff. However, just as you would not hand your device to someone else to directly fix or improve your code, so also you may not copy anything directly from an AI agent into your submission.

Although you are prohibited from having AI tools directly integrated into your workspace or from copying content from these AI assistants directly into your submission, you are nonetheless permitted to use them more generally. The important consideration is to ensure that you are using the AI agent as a learning assistant rather than as a homework assistant.

NOTE: In case of new developments in AI ethics or technology during the semester, the instructor reserves the right to amend this policy to protect academic integrity and ethical standards.

By adhering to this policy, you commit to responsible and ethical use of generative AI in this course. If you have questions about what is allowed, or not, please ask your instructor.

Allowed Use of AI in CSC 216

Students are allowed to use NCSU Gemini Guided Learning Mode to support learning in an ethical manner. Students must authenticate using their NCSU credentials to ensure student data remains private and that chats are not used for training purposes. All other Gemini gems and modes (including ‘deep research’, ‘canvas’, and ‘image’) and all other AI tools or services (including ChatGPT, Copilot, etc.) are prohibited in CSC 216.

You may use AI responsibly to enhance your work, not to bypass critical thinking and creativity:

  • understand concepts or questions related to lectures or assignments [Note: the AI tool can be wrong];
  • get suggestions for code improvement [Note: no more than a method can be provided to the AI]; or
  • assist in debugging code or code understanding [Note: no more than one failing test and associated method can be included]
  • assist in document editing once as allowed in specific assignments [Note: the edited text will be provided first in the submission and will be followed by the allowed prompt (instructor provided) and the original text you wrote.]

You MUST cite your AI use. Treat AI like any other source. If AI helps you with your code then you must document the interaction. Include a transcript of your interaction with AI in the project’s README file. Details are in the AI Citations section below. You must cite the source (Google Gemini & if learning mode is used), the prompt, any provided materials, the response, and the actions that you took based on the response.

Note that AIs can be wrong or may suggest information that is beyond the scope of the course. An AI result may be incorrect as evaluated by the human teaching staff in the course. The evaluation of assignments in the course as defined by the teaching staff is the final determination of your assignment grade. Additionally, AIs may suggest information that hasn’t yet been covered or is beyond the scope of CSC 216 (e.g., a recursive solution before we discuss recursion, the mention of software engineering topics not covered in class). It is your responsibility to reflect on the AI’s response to determine if it is appropriate and within scope.

Prohibited Use of AI in CSC 216

Use of AI tools to partially or fully generate drafts, responses, or submissions for course assignments is prohibited! You may not use AI to generate code or tests from pseudo code or the project requirements, generate Javadoc contents, or write design proposals or system tests for you.

AI tools are also unfamiliar with specific course materials and may suggest using libraries or frameworks not used in this class. The inclusion of material beyond the scope of what was taught in CSC 216 by the assignment deadline may lead to an academic integrity violation (e.g., a recursive solution before we discuss recursion, the mention of software engineering topics not covered in class). By distributing course materials into an AI tool, you may be violating intellectual property or copyright (see NC State Code of Student Conduct Section 8.3 Misuse of Academic Materials).

Your course grade must represent your knowledge and skills on course topics – coursework is not intended to assess your ability to use or prompt AI tools to solve those problems or draft submissions for you. In other words, use of these tools/services is prohibited for work that is assessed in CSC 216, including (this list is NOT exhaustive): Copilot, ChatGPT, Gemini (outside of the the NC State environment), Chegg Answers, etc.

Translation Tools

The use of language translation tools will be allowed for written assignments for students where English is not their primary language. The allowed workflow is as follows:

  • Write your solution to the assignment in your primary language.
  • Run your solution through the translation tool.
  • You can then edit the English solution and use an AI tool for one edit pass as described in the assignment.
  • Your submitted solution will include the following: 1) the edited English submission for grading, 2) the translated English version of the assignment submitted to an AI tool (if AI was used), 3) the original solution in your primary language, and 4) the translation tool used.

Example Citations

Help-seeking via Office Hours or the Course Forum:

1
2
3
4
5
6
7
8
9
10
11
12
/* Citing Help from another Person: (In method or class level comments)
 * I received help from Dr. Heckman on DATE during her office hours.  We discussed X.
 */

/* Citing Help from other Assignments
 * The code for this method is based on Exercise Y that I completed with Z on date.
 */

/* Citing Help from the Textbooks
 * The code for this method is based on the ArrayList.add() method of the course ZyBook section
 * on ArrayLists.
 */

AI Citations

Citations about the use of AI for programming assignments should be in the project’s README.md file. If you include code in your prompt, it must be in the transcript that you provide to the teaching staff. Provide the full transcript; do not summarize (or use an AI tool to summarize).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Example 1
AI Tool: Google Gemini, Learning Mode
Prompt: The following test case is failing on this method. 

<include test case> 

<include method>


Result: AI tool output
<include output here>

Action: I changed == to .equals at line X.

# Example 2
AI Tool: Google Gemini

Prompt: Explain the flow of control in the given method given the input X. 

<include method>

Result: AI tool output
<include output here>

Action: I better understood the flow of control for the given input, which helped me debug a problem.

Citations about the use of AI for written assignments will be included in the following way, with possible assignment specific details.

  • Portion of the document that will be submitted for grading that may be AI edited.
  • The AI prompt that will be provided as part of the assignment for editing written text.
  • The original text that you provided to the AI tool. This original text should be the completed assignment, in your own words, that the AI tool will then edit for final submission.

Protecting Yourself

  • Do not leave papers lying around your workstation.
  • Cover your written exam responses with a cover sheet to prevent others from copying your responses.
  • Do not dispose of important papers in the lab recycling bins and trash cans until after the assignment is graded.
  • Do not give out your password.
  • Do not leave your workstation unattended or forget to log yourself out.
  • Do not leave your laptop unattended.
  • Do not give other students access to any of your workspace or email them any code.
  • Do not give other students access to your course materials or your personal computer.
  • Do not email, ftp, or post your code on the Internet, message boards, etc.
  • Keep all copies of final an intermediate work until after the assignment is graded.
  • Keep all graded assignments until after you receive the final semester grade for the course.
  • Do not discuss implementation details of the assignment with your peers.
  • Do not discuss the contents of a course exam with other students, especially those students who have not taken the exam yet.
  • Ask the instructor for clarification of any questions or concerns about academic integrity policies before submitting an assignment.

Forum Use

The forum is available to ask questions about assignments and tests.  Do NOT post any code to the forum unless the post is private! The teaching staff reserves the right to edit any student’s forum post for inappropriate content. Additionally, use of the forum is a privilege. Improper use for the forum may result in a ban from posting or reading.

Posting Assignment Artifacts Online

While your deliverable is your work, the assignment artifacts (guided projects, project requirements, project design, provided code, exam questions, etc.) are the intellectual property of the instructors and the university.  You may not post any assignment artifacts (including assignment descriptions) or solutions to a publicly accessible website, public code repository, or assignment repository (e.g., Chegg, etc.) during or after the semester. Teaching staff will request removal of unauthorized materials; failure to remove materials in a timely manner will result in an academic integrity violation.

Some companies like to review student code artifacts as part of a hiring process. You may use CSC 216 materials for this code portfolio using the following guidelines: 1) the code must be posted in a private repository or online resource and only shared with the hiring manager or reviewer and 2) you must add a README or additional documentation clarifying the parts of the code you implemented and differentiating what was provided for you (GUI, design, tests, etc.). After the review is complete (about 2 weeks), remove permissions from the reviewer.

Academic Honesty

See http://policies.ncsu.edu/policy/pol-11-35-01 for a detailed explanation of academic honesty.

Honor Pledge

Your name on any test or assignment or the electronic submission of an assignment through Moodle or other class courseware system indicates, “I have neither given nor received unauthorized aid on this test or assignment.”

University Policies

Student privacy

  • Originality Checking Software: Software is being used in this course to detect the originality of student submissions. We will use a software similarity detection tool on programming assignments. We may also use tools that would detect AI generated solutions.
  • Class Recording Statement: In-class sessions are recorded in such a way that might also record students in this course. For Section 001 and 002, these recordings will NOT be used beyond the current semester or in any other setting outside of the course. For Section 003, the recordings will be used in future offerings of the Engineering Online Distance Education version of CSC 216. If you have concerns, please don’t sit in the first few rows and ask questions outside of class time.
  • Class Privacy Statement: This course requires online exchanges among students and the instructor, but NOT with persons outside the course. Students may be required to disclose personally identifiable information to other students in the course, via electronic tools like email or web postings, where relevant to the course. Examples include online discussions of class topics and posting of student coursework. All students are expected to respect the privacy of each other by not sharing or using such information outside the course.

Other Policies

Students are responsible for reviewing the NC State University PRR’s which pertain to their course rights and responsibilities:

Student Resources

Academic and Student Affairs maintains a website with links for student support on campus, including academic support, community support, health and wellness, financial hardship or insecurity, and more. Find Help on Campus.

Disability Resources

Reasonable accommodations will be made for students with verifiable disabilities. In order to take advantage of available accommodations, students must register with the Disability Resource Office (DRO). For more information on NC State’s policy on working with students with disabilities, please see the Policies, Rules and Regulations page maintained by the DRO and REG 02.20.01 Academic Accommodations for Students with Disabilities.

Safe at NC State

At NC State, we take the health and safety of students, faculty and staff seriously. The Office for Institutional Equity and Diversity supports the university community by providing services and resources to support and guide individuals in obtaining the help they need. See the Safe at NC State webpage for resources.

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.

Course Evaluations

ClassEval is the end-of-semester survey for students to evaluate instruction of all university classes. The current survey is administered online and includes 12 closed-ended questions and 3 open-ended questions. Deans, department heads, and instructors may add a limited number of their own questions to these 15 common-core questions.

Each semester students’ responses are compiled into a ClassEval report for every instructor and class. Instructors use the evaluations to improve instruction and include them in their promotion and tenure dossiers, while department heads use them in annual reviews. The reports are included in instructors’ personnel files and are considered confidential.

Online class evaluations will be available for students to complete during the last two weeks of the semester for full semester courses and the last week of shorter sessions. Students will receive an email directing them to a website to complete class evaluations. These become unavailable at 8am on the first day of finals.

Syllabus Modification Statement

Our syllabus represents a flexible agreement. It outlines the topics we will cover and the order we will cover them in. Dates for assignments represent the earliest possible time they would be due. The pace of the class depends on student mastery and interests. Thus minor changes in the syllabus can occur if we need to slow down or speed up the pace of instruction.

Course Schedule

NOTE: The course schedule is listed on Moodle and GitHub Pages for each section and is subject to change.