CS 1109: Fundamental Programming Concepts
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, list, and functions. An appropriate high-level programming language is used (Python). Students with previous programming experience and students who do not intend to take CS 1110 or CS 1112 should not enroll in this course.
This course is worth two credits and the grading system is S/U (Satisfactory/Unsatisfactory).
Upon successful completion of CS 1109, students will be able to:
This course takes place entirely in person on Cornell University's Ithaca campus and meets five times a week, Monday through Friday, 11:30 a.m.–12:25 p.m. (EDT) in Upson 225. The classroom sessions will consist of lectures and labs (typically two and three a week, respectively).
We are meeting in Upson 225, which is a computer lab, instead of the assigned classroom listed in the Cornell Student Center.
Office hours will be held in the instructor's office located in Gates Hall 331. Hours are currently to be determined, but will be regularly updated on the course homepage.
There are a few ways we will communicate in the course:
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!
For simplicity, we will be writing code in Python’s Integrated Development and Learning Environment (IDLE). To install, just download directly from Python, go through the installation steps, then run IDLE. IDLE offers a simple interface: a text editor with syntax highlighting and an interactive Python shell.
The latest version of Python at the moment is version 3.12.4, but as long as you use 3.7+, then we should not run into any compatibility issues (if so, contact me directly).
“Personal computer issues” are not a valid reason for not completing assignments on time. If any issues arise, you can use an in-person Cornell Engineering Computing Lab computer, such as the ones in the lab (Upson 225) we will be using in class, or use a Cornell Remote Instructional Computer to access a Windows computer with Python 3 on it. If you need help using Cornell lab computers, please reach out for help.
There is no required textbook for this course. However, as a supplementary reference to our in-class materials, we may refer to Think Python: How to Think Like a Computer Scientist (2nd edition) by Allen B. Downey throughout the semester.
The textbook is free and available online as a PDF or in HTML.
To pass the course with a Satisfactory grade, you will need at least an 80% weighted average across all graded assignments. I will assess your learning through individual assignments, labs, an in-person exam, and participation.
Component | Weight |
---|---|
Assignments | 40% |
Labs | 25% |
Exam | 10% |
Course Project | 20% |
Participation | 5% |
There will be no curves or competitive grading in this course; every student has an opportunity to receive a satisfactory grade.
Individual assignments will make up 40% of your total grade. There will be a total of four assignments due throughout the course. All assignments are weighted equally (10%), though not all are equally challenging. Each assignment will be listed with a due date and time on the course schedule.
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 reach out to me for clarification.
With the exception of the final assignment, which must be turned in by the end of the final exam period, 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.
Some weeks may be busier, tougher, and more stressful than others, and that is normal! In an effort to account for unexpected challenges, 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 will account for 25% of your total grade. We will have weekly labs during class to explore and work through problems. Labs will generally be due at the beginning of class, two sessions after the initial lab class session. See each individual lab and Canvas for due dates.
There will be one in-person exam worth 10% of your total grade. The exam is scheduled to be on July 19, 2024.
Everyone in class is expected to complete a course project over the course of the semester, worth 20%. You may work alone or you may work in groups of up to three (3) students. Some examples of appropriate projects are creating/implementing a game, creating a simulation of real-world phenomena, and implementing an algorithm to solve a problem.
Throughout the course, there will be milestones set in place to help everyone make progress on the project. I will meet with each group from time to time to help with any obstacles you encounter.
The 20% project weight will be composed of 5% for a project proposal, 5% for the final project presentation, and 10% for the project itself.
The final exam date for our class is Monday, August 5, 2024 at 1:30 − 4 p.m. in Hollister Hall 110. In place of a final exam, your course project, the final lab, and any assignment resubmission will be due on this day at 4 p.m. EDT.
During the final exam period, we will hold class for course project presentations. The details of the presentation will be discussed in class as we get closer to this date.
Your participation in this course will account for the remaining 5% of your final grade. To get the full 5% you must, fill out the Intro survey in week 1 and the end-of-semester course evaluation for this class.
I will not be taking attendance. However, regular attendance is essential to succeeding in this class. The condensed timeline for this class means that catching up on even one missed class is more difficult than during a normal semester.
Throughout the semester, I will post class materials to this website, so you will have access to notes you missed in class. You will need to familiarize yourself with any material you missed and ask for help if you need. You are still expected to submit your assignments and labs on time.
During class, stay engaged, ask/answer questions, and be respectful of others. During labs, work collaboratively and ask for help when you need it.
Absolute integrity is expected of all Cornell students in every academic undertaking. You are responsible for understanding these policies:
Accordingly, this course adopts the following rules:
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.
You must write your own code 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.
For this reason, auto-completion tools are not allowed. This includes auto-completion provided by extensions or plugins to Python IDLE.
To be explicit, use of GitHub Copilot, ChatGPT, or any other AI-powered coding tool is an academic integrity violation.
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), so that we have adequate time to arrange your approved academic accommodations.
If you have, or think you may have, a disability, please contact Student Disability Services for a confidential discussion of your individual needs: sds_cu@cornell.edu or visit sds.cornell.edu to learn more.
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 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.
Unless specified elsewhere on this page, this work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.