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:50pm on Mondays and Wednesdays at McDonnell 105. Lectures introduce new material.

Precepts. Precepts meet at 1:30–2:50pm on Tuesdays and Thursdays at McDonnell 105. Precepts review the material from the corresponding lecture.

Labs. Labs meet at 10:30–1pm on Fridays at McDonnell 105. Labs are intended as a way for students to begin the week's programming assignment.


COURSE STAFF


Sebastian Caldas
Faculty
Instructor

Marcel Dall'Agnol
Faculty
Instructor

Ammaar Alam
Undergraduate
Course Fellow

Erik Lawani
Undergraduate
Course Fellow


ASSESSMENTS

Programming assignments. There are 6 weekly programming assignments. For policies on due dates and late days, please see below.

Quizzes. There are 6 weekly quizzes. For instructions on how to register for PrairieLearn, please see below.

Final exam. The final exam will be on Wednesday August 14th.

Participation. Participation in this course is fundamental to engaged learning. You are expected to attend each lecture, precept, and lab on time and ready to participate fully. 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, and technical issues with your iClicker app. Please do not request a waiver unless you will be exceeding this limit. To request a lecture attendance waiver, contact the instructors.

Course grades. Your grade for the course will be based on the following components: programming assignments (45%), final exam (25%), quizzes (15%) and participation (15%).

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.


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. The assigned readings are required.

Booksite. The booksite contains many useful resources while programming.

Canvas. We will post grades in Canvas.


iClicker

To make the lectures more interactive, we will be using iClicker. To earn participation credit, you must attend lecture, participate in the iClicker polls, and register your remote or mobile/web app using your Princeton NetID email address:


PrairieLearn

Quizzes are due at 6:00pm ET on Friday. They must be completed individually on PrairieLearn. You must sign up with your Princeton NetID email address:


Programming Assignments

Assignments are due at 2:00pm 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 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 one (or more) 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.


Collaboration

This course permits and encourages many forms of collaboration, 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 COS 125 alums classmates AI Chatbots Other
discuss concepts with... yes yes yes yes yes yes
acknowledge collaboration with... yes yes yes yes yes yes
show your code/solutions to... yes yes yes no no no
view any code/solutions of... yes no no no no no
copy any code/solutions of... yes no no no no no
Copying or adapting code that is not yours is permitted only if it comes from the course materials (i.e., the course textbook, companion booksite, 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) to create or debug programming assignment code.

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.


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.