**CS 1109: Fundamental Programming Concepts (Summer 2023)** [Home](index.md.html) • [Schedule](schedule.md.html) • [Syllabus](syllabus.md.html) • [Assignments](assignments.md.html) • [Labs](labs.md.html) (#) Syllabus Course : CS 1109: Fundamental Programming Concepts Instructor : Zachary J. Susag ([`zjs@cs.cornell.edu`](mailto:zjs@cs.cornell.edu)) Website : [`https://www.cs.cornell.edu/courses/cs1109/2023su/`](https://www.cs.cornell.edu/courses/cs1109/2023su/) (##) Course Description This course is designed for students who intend to take CS 1110 or CS 1112 and wish to get a head start. CS 1109 focuses on basic programming concepts and problem analysis and decomposition. The programming concepts to be studied include control flow, functions, and lists. An appropriate high-level programming language is used (e.g., Python). Students with previous programming experience and/or students who do not intend to take CS 1110 or CS 1112 should *not* enroll in this course. (###) Credits and Credit Hour Options This course is worth 2 credits and the grading system is S/U (Satisfactory/Unsatisfactory) *only*. (###) Prerequisites/Corequisites There are no prerequisites/corequisites for this course. (##) Course Objectives/Student Learning Outcomes Upon successful completion of CS 1109, a student will: * Be able to use procedural statements — assignments, conditional statements, loops, function calls — and lists. * Be able to code and test small Python programs that meet requirements expressed in English. This includes a basic understanding of top-down program design. (##) Time & Location This course takes place entirely in-person on Cornell University's Ithaca campus and meets five times a week: MTWTF, 11:30am – 12:25pm EDT in Upson Hall 225. The classroom sessions will consist of lectures and labs: * **Lectures:** Tuesdays & Thursdays, 11:30am – 12:25pm EDT in Upson Hall 225 * **Labs:** Mondays, Wednesdays, & Fridays, 11:30am – 12:25pm EDT in Upson Hall 225 (##) Office Hours Office hours will be held in the instructor's office located in Gates Hall 333. Hours are currently to be determined, but will be regularly updated on the course homepage: [`https://www.cs.cornell.edu/courses/cs1109/2023su/`](https://www.cs.cornell.edu/courses/cs1109/2023su/). (##) Communication There are four ways we will communicate in the course: 1. **Website**: This website will house the course schedule, due dates, this syllabus, and other important course information. 2. **Canvas**: Any course announcements will be posted on [Canvas](https://canvas.cornell.edu/courses/52636/). Additionally, there are links to Ed and Gradescope in Canvas. 3. **Gradescope**: Assignments and grades will be managed through [Gradescope](https://www.gradescope.com/courses/552356). 4. **Ed**: Any questions about course materials should be posted on [Ed](https://edstem.org/us/courses/40504/discussion/). I will respond as soon as I can. If your post does *not* contain sensitive information (e.g., your code, personally identifiable information), I would encourage you to make the post public for the benefit of your classmates. It is quite likely that others may have the same question as you and would appreciate the discussion. Please do not email me questions about the course materials. If you want to talk to me concerning topics outside of course material, please send me an email or stop by office hours. I'm always happy to talk! (##) Academic Integrity Absolute integrity is expected of all Cornell students in every academic undertaking. You are responsible for understanding these policies: * [Cornell University Code of Academic Integrity](https://theuniversityfaculty.cornell.edu/dean/code-of-academic-integrity/) * [Computer Science Department Code of Academic Integrity](https://www.cs.cornell.edu/undergrad/CSMajor/#ai) Accordingly, this course adopts the following rules: * For **assignments** and the **final project**, everything you turn in must be 100% your own work. The assignments should be viewed as opportunities to practice your programming skills and enhance your problem-solving capabilities. As a general rule, you are *not* allowed to look at the code of any students outside your group and vice versa. High-level discussions about the requirements for the assignment and general course concepts are permitted and encouraged, however. More specifically, - Do not show any partial solution to another student or give hints. - Never share code. - Do not search the Internet for solutions (e.g., Wikipedia, StackOverflow, GeeksForGeeks, etc.) - **If you're not sure whether or not something is OK, ask me!** * For the **exam**, you are not allowed to use outside materials, calculators (you won't need a calculator), or any other device unless explicitly approved by me. You may not talk about the exam to anyone outside of the course staff. Assignments will be submitted and graded on Gradescope which employs an automatic plagiarism detector. *Students agree that by taking this course all submitted work may be subject to similarity analysis using plagiarism detection software, such as the system used by Gradescope.* In a nutshell, academic integrity is about respecting yourself, others, and the greater Cornell academic community. You respect yourself by only submitting work completed through your own effort and you respect others by acknowledging and citing contributions from others when such collaboration is allowed. (###) Code Completion/AI Tools In an introductory programming course, we believe you must code yourself to internalize the material. The act of construction reinforces concepts, checks your knowledge, and gives you opportunities for learning by failure that ultimately accelerate your learning. Similarly to prose, there are auto-completion tools for programming that will write various parts of the code for you. While useful in production scenarios, these tools deny you the opportunity to learn by construction. Consequently, **we disallow any auto-completion tools not already provided by the course software**. This includes auto-completion provided by extensions or plugins to the course’s recommended IDE beyond those required by the course. **To be explicit, use of GitHub Copilot, ChatGPT, or any other AI-powered coding tool is an academic integrity violation.** (##) Accommodations **For students with disabilities**, your access in this course is incredibly important to me. Please request your accommodation letter early in the semester, or as soon as you become registered with [Student Disability Services (SDS)](https://sds.cornell.edu/), so that we have adequate time to arrange your approved academic accommodations. * Once SDS approves your accommodation letter, it will be emailed to both you and me. Please follow up with me to discuss the necessary logistics of your accommodations. * If you are approved for exam accommodations, please consult with me at least two weeks before the scheduled exam date to confirm the testing arrangements. * If you experience any access barriers in this course, such as with printed content, graphics, online materials, or any communication barriers, reach out to me or SDS right away. * If you need immediate accommodation, please speak with me after class or send an email message to me and SDS at [sds_cu@cornell.edu](mailto:sds_cu@cornell.edu). If you have, or think you may have, a disability, please contact Student Disability Services, or me, for a confidential discussion of your individual needs: [sds_cu@cornell.edu](mailto:sds_cu@cornell.edu) or visit [sds.cornell.edu](https://sds.cornell.edu) to learn more. (##) Mental Health & Wellness Your mental health and wellness is just as important as your physical health. If you experience personal or academic stress or need to talk to someone who can help, contact the instructor or any of the *free* mental health resources on campus: * [**Cornell Health**](https://health.cornell.edu/services/mental-health-care): Provides 24/7 Crisis Counseling and Intervention & the Let's Talk program at 607-255-5155. * [**Let's Talk**](https://health.cornell.edu/services/mental-health-care/lets-talk): Drop-in professional consultation at 607-255-5155 (ext. 2) * [**Empathy Assistance and Referral Services Counseling**](https://www.earscornell.org/): EARS is a student-led volunteer organization that provides peer-lead counseling services at 607-255-EARS. (##) Community of Learning Cornell University aims to provide an inclusive learning environment which celebrates its diversity and provides opportunities for every student to succeed. Everyone — the instructor and students — must be respectful of everyone else in this class. All communication, in class and online, will be held to a high standard for inclusiveness: it may never target individuals or groups for harassment, and it may not exclude specific groups. That includes everything from outright animosity to the subtle ways we phrase things and even our timing. For example: do not talk over other people; don’t use male pronouns when you mean to refer to people of all genders; avoid explicit language that has a chance of seeming inappropriate to other people; and don’t let strong emotions get in the way of calm, scientific communication. In particular, by participating in this course, all students and staff commit to: * Recognizing that everyone starts from different bases of knowledge and remaining respectful and constructive whenever being critical, * Actively listening to one another and, especially during group work, encouraging all participants to contribute to the task at hand. If any of the communication in this class doesn’t meet these standards, please don’t escalate it by responding in kind. Instead, contact the instructor as early as possible. If you don’t feel comfortable discussing something directly with the instructor—for example, if the instructor is the problem—please contact the advising office or the department chair. (##) Materials (###) Textbook The textbook for this class is [*Think Python: How to Think Like a Computer Scientist (2nd edition)*](https://greenteapress.com/wp/think-python-2e/), by Allen B. Downey. Although we will refer to the text, it presents the course material in a different order than we do. Consider the textbook as a good *supplementary* reference. The textbook is freely available online as a [PDF](http://greenteapress.com/thinkpython2/thinkpython2.pdf) or in [HTML](http://greenteapress.com/thinkpython2/html/index.html). If you desire a hard-copy, you may purchase one either on Amazon or through the Cornell Book Store, although the course staff recommends using one of the free electronic versions. (###) Software There are several software packages that we will use in this course for learning how to program, notably the Python programming language and [Visual Studio Code](https://code.visualstudio.com/), a general-purpose Integrated Development Environment (IDE). (##) Assessment The goal of assessment is to provide a measure to help me, the instructor, and you, the student, understand the learning progression within the course. They help to gauge whether the aforementioned learning outcomes are being achieved, to highlight topics of confusion, and to inform you about areas for improvement. With this in mind, I will assess your learning through **individual assignments**, **labs**, an **in-person exam**, a **final project**, and **participation**. (###) Assignments Individual assignments will make up 45% of your total grade. There will be a total of five assignments due throughout the course. All assignments will be weighted equally (9%), though not all are equally challenging. Each assignment is listed with a due date and time on the [course schedule](schedule.md.html). Generally, assignments will be due at the end of each week on Canvas. These assignments are intended to help you practice your programming skills, and to assess your *individual* understanding of the course material. Therefore, collaboration on assignments is **not permitted**. Some examples of prohibited collaboration on programming assignments include: discussion of common issues, potential solutions, or past assignments. If you have questions on an assignment, please post a *private* question on [Ed](https://edstem.org/us/courses/40504/discussion/) or see me in office hours. (####) Late Submission Policy You may submit an assignment up to 24 hours late for a flat 10% deduction. Assignments will not be accepted after 24 hours beyond the due date has passed. (####) Resubmission Policy Life is inherently messy and can often interfere with your learning. Some weeks may be busier/tougher/more stressful than others and that is normal! In an effort to account for life's curve balls, at the end of the course you may request to **resubmit up to one assignment** to be graded *without penalty*, provided that you originally scored at least 40% when the assignment was originally submitted. The 40% cutoff is in place to ensure that a moderate amount of effort is shown on the chosen assignment the first time around. One consequence of this cutoff is that you *cannot* resubmit an assignment that you previously missed the deadline for (i.e., beyond the 24 hour submission window). (###) Labs Labs will account for 10% of your total grade. On Mondays, Wednesdays, and Fridays, we will have a lab to allow you to gain familiarity and eventual fluency with the course concepts by exploring and working through problems. These lab exercises should be completed and uploaded to Canvas before the start of the next lab session, unless otherwise specified. (###) In-Person Exam There will be one in-person exam worth 20% of your total grade. The exam is currently scheduled to be on July 21st, 2023. (###) Final Project In place of a final exam there will be a final programming project due on July 31st, 2023 at 4:00pm EDT worth 15% of your total grade. (###) Participation Your participation in this course will account for the remaining 10% of your final grade. To participate fully in this class, you must: * attend all course sessions * ask and answer questions in a way that furthers the discussion of class topics * work collaboratively with other classmates during class sessions * be adequately prepared for class **Attendance in this course is required** and will count towards your participation grade. However, if you must miss a class, please contact me as soon as you can so that we can ensure that you don't fall behind. In particular, **if you are sick, please do not attend class**. If you miss a class you are still responsible for making up any missed topics and in-class work. Collaborative work on labs and in-class is part of your grade in this course. One of the skills I expect you to develop in this course is to work well with others on challenging technical problems. Furthermore, utilizing discussion with peers and other external resources to facilitate your learning is a critical skill for success in computer science. Lastly, to "be adequately prepared for class" means that you have 1) read and reflected on any assigned readings for that course session, and 2) you are mentally present to engage with the course material for that day. Six weeks is a *very* compressed time-frame for a course and it is paramount that you come to class ready to learn so that we may cover all the required course topics. A student who consistently attends class, engages with course topics, works well with classmates, and comes to class ready to learn should expect to receive 90% on participation. I reserve 100% for those students who make exceptional contributions to the class discourse, perform exemplary work as a supportive classmate, and other situations which go beyond my baseline expectation for students in this class. Students who participate in counterproductive ways will earn a lower participation score. If you are at all concerned about your level of participation in the course, please contact me. (##) Grading Even though this course is S/U only, **mastery of the material at the B- level is required** to receive a satisfactory grade. This translates to achieving at least an 80% weighted average across all graded assignments. In summary, your total grade will consist of the following weighted components: Component | Weight ---------------|:--------: Assignments | 45% Labs | 10% Exam | 20% Final Project | 15% Participation | 10% There will be no curves or competitive grading in this course; every student has an opportunity to receive a satisfactory grade. (##) Tentative Schedule & Topics * **Week 1**: Introduction, types, modules and functions, conditionals * **Week 2**: Nesting, testing and debugging, functions and memory * **Week 3**: Iteration * **Week 4**: Developing algorithms, nested loops * **Week 5**: Lists **(Exam on July 21st)** * **Week 6**: Representing lists Alongside the above topics, throughout the course we will practice the skills of **program analysis and decomposition** as well as **testing and debugging**. (##) Land Acknowledgment The following land acknowledgment has been reviewed and approved by the traditional Gayogo̱hó꞉nǫɁ leadership. > "Cornell University is located on the traditional homelands of the Gayogo̱hó꞉nǫɁ (the Cayuga Nation). The Gayogo̱hó꞉nǫɁ are members of the Haudenosaunee Confederacy, an alliance of six sovereign nations with a historic and contemporary presence on this land. The confederacy precedes the establishment of Cornell University, New York state and the United States of America. We acknowledge the painful history of Gayogo̱hó꞉nǫɁ dispossession, and honor the ongoing connection of Gayogo̱hó꞉nǫɁ people, past and present, to these lands and waters." ------------------------------------------------------------------------------- Copyright © [Zachary J. Susag](https://zacharysusag.net) ![ ](assets/img/cc-by-sa.png) Unless specified elsewhere on this page, this work is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/).