The Art and Science of Computer Programming

Syllabus

Description. This course is an introduction to computer programming for students with little or no previous experience. Students will learn to read, write, and reason about computer programs. Topics include data types, conditionals, loops, arrays, functions, graphics, and sound.

Lectures. Lectures meet at 1:30 - 2:50 pm on Mondays and Wednesdays at JRR A87. Lectures introduce new material.

Precepts. Precepts meet at 1:30 - 2:50 pm on Tuesdays and Thursdays at JRR A87. Precepts review the material from the corresponding lecture.

Labs. Labs meet at 10:30 - 1 pm on Fridays at JRR A98 (note that labs are in a different room than lectures and precepts). Labs are intended as a way for students to work on the week's programming assignment.


COURSE STAFF


Marcel Dall'Agnol
Faculty
Instructor

Kevin Alarcón Negy
Faculty
Instructor

Jeffrey Asiedu-Brako
Undergraduate
Course Fellow

Ayaat K. Al-Yasseri
Undergraduate
Course Fellow


COMMUNICATION

Throughout this course we will use several methods to communicate, including:
1) Ed: an online course discussion forum where we will post announcements and where students are encouraged to ask and answer questions about course materials. Students should check Ed regularly for the latest course updates.
2) Canvas: We will post grades to the course-specific Canvas website.
3) Email: While we encourage most course-related questions to be sent through Ed, if you have urgent or sensitive questions, you are welcome to email the course staff (please include both faculty members in your email).


MATERIALS

Course website. This course website includes links to course content, including lecture slides, precept lessons, and programming assignments.

Computer Science

Textbook. Computer Science: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne. Addison–Wesley Professional, 2016. ISBN 978-0134076423. You may access a condensed version of the book with additional reference materials through the following website.


COURSE GRADES

Your grade for the course will be based on the following components (described in more detail below):

While final letter grade cutoffs will be determined at the end of the semester, a 93.0% will guarantee an A, 90.0% for an A–, 87.0% for a B+, 83.0% for a B, 80.0% for a B-, 77.0% for a C+, 73.0% for a C, 70.0% for a C-, or 60.0% for a D. You risk course failure if you earn below 60.0% of the available points. Staff discretion may be applied to adjust borderline cases.


EXAMS

There will be two hand-written exams in this course. Exams are closed-book and no notes, devices, or collaboration is allowed during the exam. Exams are subject to the procedures stated in the Princeton Honor Code.

Midterm exam. The midterm exam will be on Friday, July 17, 10:30 - 11:30 am in JRR A98.

Final exam. The final exam will be on Wednesday, August 12th, 1:30 - 2:50 pm in JRR A87.


PARTICIPATION

Participation in this course is fundamental to engaged learning.

Attendance Students are expected to attend each lecture, precept, and lab on time and ready to participate fully. The course staff will take attendance throughout the semester. The first two absences to lecture are automatically waived. Similarly, the first two absences to precept are automatically waived. This is intended to account for illnesses, religious observances, etc. Please do not request a waiver unless you will be exceeding this limit. To request a lecture attendance waiver, contact the instructors. Students are still expected to catch up on any material missed and abide by the deadline policies outlined below.

Office Hours During the first week of classes, we expect students to attend a faculty office hour session for a one-on-one meeting of about 15 minutes. The goal of this meeting is for students to get an opportunity to interact with their professor and become comfortable seeking help during office hours for the rest of the semester. More details will be provided during the first lecture.


Quizzes

Each week, students will complete one quiz, amounting to 6 total in the course. Students must work individually on quizzes and may only receive assistance directly from course staff. Quizzes are due at 6:00 pm ET on Friday. They must be completed on PrairieLearn.


Assignments

Each week, students will complete one programming assignment, amounting to 6 total in the course. Some assignments will be partnered, while others will be worked on individually. Assignments are subject to the collaboration policy outlined below. Assignments are due at 5:00 pm ET on Sunday. If any part of an assignment is submitted late, the entire assignment will be marked late. We consider your assignment submitted as soon as you submit the acknowledgments.txt file.

acknowledgments.txt  All assignments must include a file named acknowledgments.txt, which includes your acknowledgement of original work (as specified in Rights, Rules, Responsibilities), any citations, names and dates of those who provided help, etc. Submitting the acknowledgments.txt indicates that you have stopped working on your assignment and your submitted work is ready to be graded. Your assignment solution will only be graded if the acknowledgments.txt is submitted.

Penalties for late submissions.  Late assignments are assessed a penalty equal to 10% of the possible points on the assignment per day (or partial day) late. The penalties for your first two late days during the semester are waived automatically. This is intended to account for illnesses, religious observances and travel. To request an extension beyond that, post in the appropriate Ed Discussion forum. Please do not contact course staff if you need to utilize any of your automatically waived late days.

Late days and partners.  If you are working with a partner, any late penalties apply to the group. The number of free late days a group can use is the minimum of the number of free late days each member has remaining.


Assignment Collaboration

This course permits and encourages many forms of collaboration on assignments, including from course staff and classmates. However, you must be careful to collaborate only as authorized below. Here is an executive summary:
Your partner Course staff Classmates AI Chatbots Other
Discuss concepts with... yes yes yes no yes
Acknowledge collaboration with... yes yes yes no yes
Show your code/solutions to... yes yes no no no
View any code/solutions of... yes yes* no no no
Copy any code/solutions of... yes yes* no no no
*Excluding solutions and only with staff permission

Copying or adapting code that is not yours is permitted only if it comes from the course materials (i.e., the course textbook, companion textbook website, programming assignment specifications, lecture slides, and precepts). Copying code without attribution is plagiarism and is a serious offense at Princeton.

Collaboration acknowledgment.  You must acknowledge all collaboration in the acknowledgments.txt file for that week’s assignment. Please include the names (and dates) of the instructors, course fellows, students, etc. who provided assistance. You must also indicate if you helped another student.

Discussing concepts.  Discussing general concepts includes asking what is the syntax of a for loop, or explaining how to input a sequence of numeric values. It does not include a discussion about specific code-related solutions to programming assignments.

Collaboration with an AI chatbot.  You may not use AI composition software (such as ChatGPT or GitHub Copilot) for any reason on assignments, including for understanding instructions, generating assignment code, or for debugging your code. Please see AI Usage Policy section below for more details.

Collaboration with classmates.  We encourage you to discuss common concerns with classmates either in private via personal interactions or publicly in the Ed Discussion course forum. These discussions must be kept at a general level, without exposing your solutions.
For example, you may discuss: But, you may not:
How to interpret an error message. For example, “What does IndexOutOfBoundsException mean?” Look at another classmate’s solutions (or show another classmate your solutions).
How to use a feature in IntelliJ. For example, “How do I start the embedded terminal?” Lead a classmate step-by-step through any part of the assignment (or allow a classmate to lead you step-by-step through any part of the assignment).

Collaboration with course staff.  You are welcome to discuss your solutions with course staff members (instructor and course fellows) in office hours or via private Ed Discussion posts. Do not post code on Ed or email us your code; instead, submit your code via TigerFile - the course submission system.


AI USAGE POLICY

Although artificial intelligence is becoming widely used in many domains, especially computer science, a goal of this course is to nurture students' abilities to reason about a problem, design a conceptual solution, and then implement it using programming. For this reason, this course forbids the use of any artificial intelligence on assignments, quizzes, and exams.

Students are required to seek out help directly from course staff. In addition, the course offers a myriad of resources including: lecture/precept notes, weekly lab sessions, the course Ed discussion forum, and especially staff office hours.

Any suspected AI usage that does not adhere to the rules listed in this syllabus may be reported by course staff to the Committee on Discipline, Honor Committee, or other relevant body who will investigate the concern. In line with FSI program guidelines, a finding by the Committee on Discipline or the Honor Committee that a student has violated this policy will have the consequence of failing the course, being withdrawn from their second course, and being removed from the program. FSI students may also face penalties that include but are not limited to probation and suspension from the University.


LAND ACKNOWLEDGEMENT

This course will be facilitated from Princeton, New Jersey – or the unceded, ancestral land of the Lenni-Lanape. As we gather, we honor the ongoing history and living culture of the Nanticoke Lenni-Lenape people, other Indigenous caretakers of these lands and waters, the elders who lived here before, the Indigenous people living today both in and beyond this space and the generations yet to come. For information about the histories of Indigenous stewardship of the land on which you reside, consult Native Land Digital.