Course Syllabus
IMPORTANT NOTE: Information in this syllabus is subject to change. Students will be informed immediately of any changes.
CS 1400 - Introduction to Computer Programming
Quick info:
Instructor:
Eric Heisler, eric.heisler@utah.edu (Please use Piazza for all course communications)
Office: MEB 1348
Lectures:
Monday and Wednesday 11:50-1:10pm in ASB 220, led by Prof. Heisler
Lab sessions:
Every Tuesday at various times and locations depending on your section, led by Teaching Assistants (TAs)
Attendance in lectures and labs is expected.
Important dates:
- Midterms: September 17, October 29, and November 24 (in class)
- Midterm Retake(s): Monday, December 8 (10:30am - 12:30pm in ASB 220) OR Friday, December 12 (3:30 - 5:30pm in GC 1900) ONLY ATTEND ONE
- Quizzes: September 3, September 10, September 24, October 1, October 15, October 22, November 5, November 12, November 19, and December 1 during lecture
All midterms and quizzes are paper-based, in-person, and cannot be made up if missed (see policies below). More important dates: University academic calendar, PCE semester guidelines
Textbook:
There is no textbook to purchase. A free interactive ebook will be used as an optional extra resource to support your learning.
Course Information
Welcome to CS 1400! In this course you will learn how to program a computer using the Python programming language. By the end of the course you will be able to solve problems by designing, implementing, and testing your own programs. You will also learn computer science concepts that will serve as the foundation for the rest of your computing education. The course introduces the engineering and mathematical skills required to effectively program computers. Students will complete extensive programming exercises that involve the application of elementary software engineering techniques.
This is the first of our two-semester introduction to computer programming. For many of you, CS 1400 will be your first CS course. If so, be kind and patient with yourself as you learn a new way of thinking about problem-solving. It takes time, practice, and maybe a little extra guidance, but eventually it will click, and then you will be amazed by what you can do.
Co-requisite
This course has a co-requisite of MATH 1050, 1060 or 1080. This means you should be taking or have completed up to this level in math.
Learning objectives
After successfully completing CS 1400, you will be able to:
- use variables, assignment, selection, and repetition to form solutions to simple problems
- exploit procedural abstraction (non-recursive and recursive methods) to decompose a program into manageable pieces
- employ data collections and their algorithms to solve problems, especially canonical loop patterns to process arrays and lists
- incorporate an understanding of creating and using object types, as well as their scope and life cycle, into solutions
- utilize binary representations, memory models (references, heap, stack), and persistent storage (files) in solving problems
- leverage the features of an Integrated Development Environment to design, implement, test, debug, and document a complete computer program, given only a problem statement
Lectures and Lab sessions
The lectures and labs are designed as interactive experiences, and there are frequent in-class assessments, so attendance is not optional. Participation will have a significant impact on your performance in the course. Lectures and labs are not recorded. If you are absent due to illness or emergency, look over any supplied materials for that day and ask questions through Piazza, TA help hours, or instructor office hours.
Lab sessions on Tuesdays give students guided practice applying the concepts of CS 1400. They are run by TAs in smaller groups to allow more individual help. Students selected a lab section with a particular schedule when registering for the course. To keep lab groups to a manageable size, students must attend the lab section they are enrolled in. On rare occasions when it is necessary, attending a different lab section is allowed without prior approval. Students must bring their own laptop or one borrowed from the library to each lab session.
Communication
All class announcements and student questions (public or private) take place on Piazza — sign up right away and set notifications appropriately. Do not use Canvas inbox. Email is acceptable when needed, but Piazza is preferred.
Course Materials
Canvas: This Canvas course will be updated continually throughout the semester. There will be frequent changes and additions to the weekly modules, including course notes, slides, provided code samples, assignments, quizzes, and more. Students must become familiar with the layout of the Canvas course right away and plan to visit it several times a week. None of the materials created by the instructor can be shared with anyone outside of this class, in particular they must not be uploaded to an external website.
Text book: A free interactive ebook will be used as an optional extra resource to support your learning.
Software: All programming in CS 1400 is in Python, using the PyCharm programming environment. PyCharm can be installed on your personal computer and is also available for your use on the College of Engineering’s Windows computers (WEB 210) and through the CADE remote desktop. Both Python and PyCharm are platform-independent. Instructions for installing both on your personal computer are available here.
Bring to class: You need an internet-connected device (laptop or phone) to participate in online polling activities. Also bring pencils/pens and be prepared to write on paper and discuss your ideas with classmates.
Coursework and Evaluation
Programming assignments
Weekly programming assignments will assess your proficiency with the concepts covered in class. These typically involve designing, writing, and testing substantial programs. The instructions for each assignment and its due date will be posted on Canvas. It is the student’s responsibility to ensure the successful and timely submission of each programming assignment — start early and follow the instructions carefully. Corrupted or missing files or last-minute internet connectivity issues will not be grounds for extensions. Double-check your submissions, and save a copy of all of your work. Assignments will be submitted through the Gradescope system, which provides some basic checking and testing. Students should review the results of this testing to make sure the assignment is submitted properly and is working correctly.
Late Assignments: Assignments turned in after the due date and time receive an immediate 10% deduction of the assignment value (so 10 points for an assignment worth 100 possible points) up to 24 hours after the due date. After 24 hours, the deduction increases to 20%. Two days after the due date, the submission system closes and the score becomes 0%. There is not an option to, for example, submit late assignments at the end of the semester for credit.
Longer-term issues should be discussed with the instructor - we are not trying to fail students! The Dean of Students is also a good office to contact if there are longer issues impacting your performance during the semester.
Late Passes: Every student gets two late passes to use during the semester. A single late pass forgives the one or two day late penalty for one assignment. It does not extend the assignment past the two day late period. Late passes will be automatically applied to late assignments and tracked in the Canvas gradebook. Students cannot decide to shift a late pass from one assignment (for example, where a pass was used on a 24 hour late assignment) to another (a later assignment that was 40 hours late). A late pass can only be applied on a pair submission when both members of the pair have an available late pass.
Pair Programming: For many assignments, you will be allowed to work with a partner. This is not like a group project where different tasks for the assignment might be split up between the team. Instead, if you work with a partner, you must schedule time to work together on the same part of the assignment. The basic requirement is that both teammates are working together for all the code and other materials submitted. This can be done by sitting next to a single computer while one person types and the other makes suggestions (and those roles should be switched at regular intervals). It can also be done through a shared video session while one person shares their screen and types, while the other gives ideas. It cannot be done by sending versions back and forth by email (or other similar communication) or by working on different sections of the assignment - even if you are working in the same space. Each member of a pair is responsible for knowing the details of the submitted work and knowing that each member of the team participated in all parts of producing the submitted work.
Lab Exercises
Every Tuesday, students complete a lab exercise to review the material covered recently in class or to prepare for an upcoming assignment. Often, a Canvas quiz accompanies the lab exercise and is completed for credit. Lab attendance is required. Two lab scores will be automatically dropped to allow for issues you may have in attending the labs.
Quizzes
Quizzes will be given each week throughout the semester when there is not a midterm. Quizzes may cover material from the prior week's programming assignment. See the "Important Dates" section at the top of this syllabus for the quiz dates. Quizzes will typically be given during the last 20 minutes of the class period.
There are no make-up opportunities for missed quizzes. The lowest quiz score will be dropped from your final grade to account for illness or other absences.
Exams
There are three midterm exams given in person in the regular classroom (or sometimes in an extra room). You will need to show your university ID to take a test. See the "Important Dates" section at the top of this syllabus for the exam dates. In general, make-up opportunities for exams will not be granted except for cases of a documented medical emergency, official University of Utah excused activities, or extenuating circumstances. In such cases, please email the instructor as soon as possible.
Midterm Retake Opportunities: Exams are used to assess your understanding of course material. The exam scores form a large portion of the overall grade. To aid in recovering from a poor midterm exam, you will have the option to retake any of the midterms during the final exam period. There is no final exam; instead, this time will be used in case you wish to retake a midterm. Students who perform better on any retake corresponding to an earlier midterm will be able to replace the lower midterm score with the retake score.
During the semester, if you score poorly on an exam, do not give up. Come talk with us to figure out what happened and what you can do to succeed next time. Are there things you can do to more effectively prepare for future exams? Are there some types of questions that are more difficult? Sometimes just learning how to more carefully read and interpret the questions can make a big difference.
Final Course Grade
The final grade consists of:
- Midterm exams: 55%
- Quizzes: 25%
- Programming assignments: 10%
- Labs: 10%
The following table is used to associate numerical scores with the corresponding letter grade. Note the lack of rounding. 89.99% is a B+, 90.00% is an A-.
|
|
|
|
|
Regrades
Students wishing to appeal a score on an assignment or exam must do so via Gradescope. For any Canvas quiz, the appeal must be made via a private post to Instructors in Piazza. All such appeals are due no later than one week after the score is published. See this page on the regrade process.
Policies and Resources
Laptop and mobile device policy
Students are expected to engage with the instructor and classmates during class meetings. A laptop or mobile device is needed to participate in the polling questions. These devices are permitted for note-taking, but hand-written notes are encouraged. All exams and quizzes require handwritten solutions on paper, making handwritten note-taking good practice. Furthermore, laptops and mobile devices tempt students to multitask during class meetings rather than focusing on the topic.
Academic misconduct policy
The reason you are here and paying for this course is to learn. We intend to give you the resources and guidance to ensure that you can effectively learn the needed skills and concepts. Taking unauthorized shortcuts (cheating) circumvents this learning, leaving gaps in your knowledge and weakening the foundation of your computing career. This is such an important factor in your future success that this course needs a strict policy on academic misconduct. Read the following policy carefully and ask for clarification if needed.
Students are bound to this linked Academic Misconduct Policy.
Other polices and guidelines
Students are bound by the following policies and guidelines:
- School of Computing policies and guidelines
- College of Engineering guidelines
- University of Utah Student Code
Students should read and understand each of these documents, asking questions as needed.
ADA statement
The University of Utah seeks to provide equal access to its programs, services and activities for people with disabilities. If you need accommodations in the class, reasonable prior notice needs to be given to the Center for Disability & Access. CDA will work with you and the instructor to make arrangements for accommodations.
All written information in this course can be made available in alternative format with prior notification to the Center for Disability & Access.
Student mental health resources
If you would like help with any negative feelings, such as burnout, anxiety, depression, isolation, or loneliness, reach out for campus mental health resources, including counseling, trainings and other support.
Consider participating in a Mental Health First Aid or exploring other wellness services provided by our Center for Campus Wellness and sharing these opportunities with your peers.