CS 1109: Fundamental Programming Concepts (Summer 2024)

CS 1109: Fundamental Programming Concepts (Summer 2024)
HomeSyllabusScheduleAssignmentsLabs

Syllabus

Course

CS 1109: Fundamental Programming Concepts

Instructor

Kevin Alarcón Negy

  • Office: Gates Hall 331
  • Office Hours: Monday, Wednesday, and Thursday, 2:30 pm - 3:30 pm. Friday, 12:30 − 1:30 p.m. in Gates 331

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, 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.

Credits and Credit Hour Options

This course is worth two credits and the grading system is S/U (Satisfactory/Unsatisfactory).

Course Objectives/Student Learning Outcomes

Upon successful completion of CS 1109, students will be able to:

Time & Location

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).

Important

We are meeting in Upson 225, which is a computer lab, instead of the assigned classroom listed in the Cornell Student Center.

Office Hours

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.

Communication

There are a few ways we will communicate in the course:

  1. Website: This website will house the course schedule, due dates, syllabus, and other important course information.
  2. Canvas: Course announcements and grades will be posted on Canvas. Please use Canvas to message me directly for any questions related to individual grades or sensitive matters. In most cases, you will probably want to use the following method for your questions.
  3. Ed: Questions about general course materials (e.g., questions about Python, course content, homework) should be posted on Ed. I will respond as soon as I can. If your post would be helpful to others and does not contain your own code, I would encourage you to make the post public. It is quite likely that others 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!

Materials
Software

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).

Important

“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.

Textbook

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.

Grading

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.

Assignments

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.

Late Submission Policy

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.

Resubmission Policy

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

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.

In-Person Exam

There will be one in-person exam worth 10% of your total grade. The exam is scheduled to be on July 19, 2024.

Course Project

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.

Final Exam Date

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.

Participation

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.

Academic Integrity

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.

Code Completion/AI Tools

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.

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), 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.

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:

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.


Unless specified elsewhere on this page, this work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

formatted by Markdeep 1.18