Course Syllabus

Welcome to CS 1400

Welcome to CS 1400: Introduction to Computer Programming! In this course, you will learn how to write computer programs using Python. By the end of this course, you will be able to start with a problem statement and then design, implement, document, and test a Python program that solves the problem. Along the way you will learn how to think like a computer scientist and you will learn a number of key ideas from computer science.

The course staff (faculty and the teaching assistants) are all eager to help you succeed. However, success in programming comes from time, determination, and care. Expect to be challenged and work hard!

Important Dates: There are a number of in-person paper tests and quizzes for this course. 

Midterms: Wednesday, September 25 and Wednesday, November 6
Final Exam: Thursday, Dec. 12, 3:30 – 5:30 pm
Quizzes: September 4, September 18, October 16, October 30, and November 25  

Tests and quizzes are in-person in a classroom. It is your responsibility to be available during the tests. If you have testing accommodations, please make sure to be responding to the CDS office for scheduling.

Instructor: David E. Johnson
Email: david.e.johnson@utah.edu
Office: 3146 MEB (along the west face of the MEB 3rd floor). 
Instructor office hours See the link at the top of the course website under Course Resources. 
Textbook: A free interactive ebook will be used. Please see the page under Course Resources for creating an account on our course ebook.
Clicker or audience response device: Interactive class activities will be done during lecture. A device with Internet access is needed during the class lecture. You should also be prepared to write small programs on paper and to share your thoughts with the class.
Description: CS 1400: Introduction to Computer Programing is the first of two courses that make up our introduction to computer programming. The second course, CS 1410, teaches object-oriented programming using the Java programming language. For many people CS 1400 will be their first CS course - if you are one of these people, be kind and generous with yourself as you learn a new way of thinking about problem-solving! The course introduces the engineering and mathematical skills required to effectively program computers, as well as the range of issues confronted by computer scientists. A major theme of the course is the role of procedural and data abstraction in decomposing programs into manageable pieces. Students will complete extensive programming exercises that involve the application of elementary software engineering techniques.

The learning outcomes of this course are:

  • 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

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.

CS 1400/10 or CS 1420: There are now two introductory paths for CS. CS 1400 is part of a two-course sequence. CS 1420 is an accelerated single course. Please carefully consider your background, course load, other demands on your time, and interest in a high-intensity course before choosing CS 1420 over CS 1400/10. The two course sequence was developed for a reason - to help students be successful in computer science! The belief is that students taking the time for the two-course sequence will be better prepared for the next courses in the CS sequence and that more of these students will do well enough to progress.

Meeting Schedule

This course has two lectures per week (MW 3:00-4:20pm) and Tuesday lab sections. You should be registered for a single lab section and the lecture.

  • Lectures: Core class material will be covered in lecture. During lecture, the course instructor will describe key ideas and terms, demonstrate programming concepts, and ask for class participation to assess understanding. It is critical to attend lecture and to actively engage in the material. Lectures are in GC 1900 (see map).
    A portion of the University of Utah campus map showing where GC 1900 is.
  • Lab sessions: Lab sections provide an opportunity for students to apply concepts from lecture and readings in guided activities. The lab session is a place for you to see if you can translate the material learned in lecture to small programming exercises while getting feedback from your peers and course TAs. Lab attendance is required. Labs are in MEB 3225. Students are expected to have a laptop to use in lab (see the SoC laptop policy). The library has machines available to borrow for a semester. Please talk to the course instructor if you have issues accessing a machine.

Course Materials  

Website The class website is the Canvas course available through CIS. It will be updated throughout the semester with the class schedule, lecture notes and videos, laboratory exercises, assignment specifications, and much more. Please regularly look at the course weekly modules for new materials.

Lecture notes The instructor will often make use of slides and other documents during lecture. These documents will be posted on the class website; however, such posted documents may not represent completely the material covered in class. Students are strongly encouraged to stay current with posted materials.

Lecture recordings The instructor will make a reasonable effort to capture the lectures by capturing the screen and audio. This is not intended as a replacement for attending lecture, but is intended as an aid for review. Recordings may fail for various technical reasons and will not be redone.

Python All programming in CS 1400 is in Python, using the PyCharm programming environment. PyCharm is 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 on the class website under the Course Resources module.

New students should create a College of Engineering lab account at: https://webhandin.eng.utah.edu/cade/create_account/index.php  (Links to an external site.)

Student Activities and Evaluation 

Programming Assignments

Assignment Structure The instructions for each assignment and its due date will be posted on the class website. 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 will not be grounds for extensions. Double-check your submissions, and save a digital copy of all of your work. Many assignments will be submitted through the Gradescope system, which provides some basic checking and testing. Students should review the results of this testing and use it to make sure the assignment is submitted properly and working.

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. https://deanofstudents.utah.edu.

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 be done with a shared video session and sharing screens with one person typing and the other giving 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 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.

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 member of the pair have an available late pass.

Point Recovery Programming assignments are an excellent tool for learning. Your grade on these assignments should not be viewed solely as a final score but as an opportunity to identify areas for improvement. To support this learning process, you have the opportunity to recover points (up to 3% of the total assignment value) on each programming assignment by demonstrating that you have reviewed your feedback and are actively using it to learn.

To recover points, follow these steps:

    1. View Feedback: Assignments are typically graded in the Gradescope system. You will be able to see general comments and deductions applied in the grading rubric. You may also have text comments added to the submission file. An automated testing system (the 'autograder') will also provide feedback on code correctness. You should review all of this feedback. 
    2. Attend TA Help Hours: Visit TA help hours within one week after grades for a programming assignment are published. You may meet in person or on Zoom as scheduled in the TA help hours document in the Course Resources module. If the assignment was submitted with a partner, both must attend together.
    3. Discuss Assignment Feedback: Explain to the TA the feedback you received on aspects of the assignment. Then, describe how you would improve your assignment based on this feedback. If you're unsure about any part of the feedback, you can ask the TA for clarification and guidance.
    4. Request Point Recovery: After discussing the assignment with the TA, let them know that you would like assignment point recovery. The TA will then add up to 3% to the existing assignment score. The changes to the score should update in Canvas at the end of the one week recovery period.

Additional details:

    • The point recovery allows you to regain up to 3% of the total possible points for the assignment. For example, if an assignment is worth 100 points, you can recover up to 3 points. 
    • The amount of points recovered will be based on:
      • coming prepared by reviewing feedback
      • having a good discussion with a TA
      • proposing improvements to the assignment.
    • This recovery opportunity is available only within one week of receiving your assignment grade and can only be used once per assignment. After this period, point recovery for that assignment will no longer be available.
    • This is the only form of "extra credit" available in the course.

Lab exercises

Every Tuesday, students complete a lab exercise reviewing the material covered recently in lecture or preparing for an upcoming assignment. Often, a Canvas quiz accompanies the lab exercise and is completed for credit. Two lab scores will be automatically dropped to allow for issues you may have in attending the labs. To handle small issues, you can attend a different lab section than the one you are registered for, but this should not be a long-term practice. 

Exams

Testing will consist of two midterms and a final exam. Tests are given in-person in the lecture hall (or sometimes an extra room). You will need to show your university ID to take a test. See the "Important Dates" section above for the dates of tests. Tests cannot be missed and made up for any reason other than a documented medical emergency or official University of Utah excused activities.

Midterm Score Replacement Tests are used to assess your understanding of course material. The test scores form a large portion of the overall grade. To aid in recovering from a poor midterm exam, the final exam will be structured in several parts with some parts covering the material from earlier midterm exams. Students who perform better on any final exam portion corresponding to an earlier midterm will be able to replace the lower midterm score with the score from the portion of the final exam corresponding to that midterm. All the parts of the final are used to compute the final exam score. There are not other redo attempts for exams.

During the semester, if you score poorly on a test, do not give up. You should discuss the test with course staff. Consider if there are things you can do to improve your preparation for future tests. Put effort into preparing for the final exam and you can recover from that earlier midterm score.

Quizzes

Quizzes will be given during many weeks where there is not a test. See the "Important Dates" section above for the dates of quizzes. Quizzes will typically be given during the last 20 minutes of the lecture period. Quizzes cannot be missed and made up for any reason other than a documented medical emergency or official University of Utah excused activities. One quiz score will be dropped.

Electronic Textbook Exercises and Participation 

There will be weekly readings and online programming exercises through the course ebook. These exercises are critical practice for material covered during the week. There will also be problem-solving exercises worked through in groups during lecture for credit. There will a few other small activities that can earn participation credit. Three scores will be dropped to accommodate short-term issues you may be having.

Getting Help 

Instructor office hours See the link at the top of the course website under Course Resources. 

Teaching assistants and consulting hours See the link at the top of the course website under Course Resources for the consulting schedule of the course TAs. During consultation, use the TA Queue (also on the class website) to alert the TA on duty that you have a question. TA hours are normally held in the CADE lab - please see the Course Resources page for more information.

Communication For questions outside of class and consulting hours, students are encouraged to use Piazza. Please see information on how to contact course staff under the Course Resources module. 

To send urgent messages to everyone in the class, such as corrections to assignments or changes in due dates, the course staff will make use of Canvas announcements. Students are expected to check their email and the class website regularly. 

To ask a question of the course staff, students should use Piazza, which is linked in the menu bar on the left of the course Canvas page. You can send a private question to "instructors" to reach course staff.

In general, we can often provide quick and detailed responses through Piazza and it is an excellent mechanism for getting feedback. See further instructions under the "Resources" module in Canvas.

Advice for Success in CS 1400

For most of you, this will be your first class in computer science. Here is some advice on how to approach this class such that you will have the best chance for success.

  • Concentrate in lecture and lab. The concepts that are presented in lecture and lab are what are important; you will be able to find the details in the assigned reading. If you write down everything that is said and then try to figure it out later, you are wasting your time coming to lecture. Instead, think about what is being said. Try to answer all the questions that are asked, even if only in your head. Think about why material is being presented - if you do not see the connection to past materials or assignments, ask for help.
  • Participate in the lab sections. You will be working at a computer in a room with at least one teaching assistant and a small number of other students. Take advantage of the computer by trying things out. That way, you will discover the things that you do not understand in a setting where there are plenty of other people (TAs, as well as students) to help you.
  • Respect the assignments. Some students expect that if they have done the reading, concentrated in lecture, and participated in the labs, then the assignments will be straightforward. What these students do not understand is that the assignments are designed to challenge you by requiring that you apply the concepts you have learned to new situations. The assignments will be your most important learning experience in the course; they will rarely be straightforward. You should start each assignment as soon as the specifications are posted. This way, you will have time to take a break when you get stuck.

Beginners are often surprised by the amount of human effort that must go into designing, writing, and testing a program. Complaints from students about the amount of time required by introductory computer programming courses are universal. You should expect to spend at least 8 hours outside of class every week (according to University guidelines) reading, studying, and designing and writing programs. Some of you will spend less, but many of you will spend even more time. Please keep this in mind when setting up your schedule for the semester!

Final course grade 

The weighting for the final grade is:

Programming Assignments: 30%
Midterms: 25%
Final Exam: 20%
Quizzes: 15%
Labs: 5%
Ebook and Participation: 5%

Your weighted, cumulative course percentage score is turned into letter grades using the following scheme:

[100-94] A
(94-90] A-
(90-87] B+
(87-84] B
(84-80] B-
(80-77] C+
(77-74] C
(74-70] C-
(70-67] D+
(67-64] D
(64-60] D-
(60-0] E

where [ ] means including that number and ( ) means up to but not including. 

Course percentages are not rounded at the end of the semester. To ensure your placement in a desired grade category, make sure to do the assignment point recovery, which acts like extra credit, and to take advantage of the midterm test score replacement by doing well on the final.

Regrades 

Students who wish to appeal a score on an assignment, a lab, a quiz, or a test must do so within one week of receiving the score. See information under Course Resources for the regrade process.

Dropped scores 

Students may end up missing a deadline, a lecture, or a lab session for a reason that is not granted an exception. Therefore, to allow for such an occurrence, various activities allow dropped scores:

  1. There are no dropped assignment scores. 
  2. The lowest two scores on lab exercises are dropped. 
  3. Three ebook and participation scores will be dropped.
  4. No midterm or final exam scores are dropped.
  5. One quiz score is dropped.

Course Guidelines 

School of Computing Policies

Please read through the SoC undergraduate handbook: 

https://handbook.cs.utah.edu (Links to an external site.)

College of Engineering Policies

Please read through the CoE policies on appeals, adds/drops, etc:

https://www.coe.utah.edu/students/current/semester-guidelines/ (Links to an external site.)

Behavior in the classroom All students are expected to maintain professional behavior, according to www.regulations.utah.edu/academics/guides/students/studentRights.html
(the University of Utah Student Code). Students should read the Code carefully and know that they are responsible for the content. 

Students are expected to engage with the instructor and classmates during class meetings. Students are permitted to use a laptop or mobile device to take notes. Use of a laptop or mobile device for any other purpose is not permitted, and students who do so will be asked to leave the classroom. While you may consider it a right to casually browse the web, engage in social media, or play games during lecture, such activity is very distracting to others (especially in a crowded classroom) and is not permitted.

Classroom behavior is important. If you wish to talk to another student during lecture, please leave the classroom. If you receive a phone call, please leave the classroom. Expect to be singled out and asked to be quiet if you are disrupting the learning environment.

Extended Illness or Quarantine: If you have a period of extended illness, you should work with the course instructor to keep you on a path for success for the semester. Please discuss your situation as soon as possible with the course instructor. 

Working together and Academic Misconduct The Kahlert School of Computing treats plagiarism and academic misconduct seriously. Many courses ask you to work independently on code. In this course, you will be encouraged to work with others on assignments and other activities like labs and exercises.

Students are not allowed to:

  • Generate code using AI tools or modify such code. You must write code yourself and with others in your group.
    • You may use basic features of the development environment which provides autocompletion of variable names, available functions, and so on. This is not the same as systems which suggest entire lines or blocks of code based on a problem description - these types of systems are using AI to suggest solutions and they are not allowed.
  • Copy or look at code from the internet related to the assignments.
    • You may use online tutorial style resources to review how to do basic Python statements. You may not search for solutions to specific assignment problems.
  • Copy or look at code from people outside your assignment team. You may not provide code to others to look at or copy.
  • Claim credit for work on an assignment that was not done. If in a pair, work on an assignment must be done collaboratively and together. Every student must help produce and understand all parts of submitted work.

Cheating is: sharing written or electronic work either by copying, retyping, looking at, or supplying a copy. Cheating is not: discussing concepts, answering questions about concepts or clarifying ambiguities, or helping someone understand how to use the class tools and software.

Submissions are routinely checked by the course staff for signs of unauthorized collaboration. 

There must be no collaboration during tests or the final exam. Please see the University of Utah Student Code for a detailed description of the university policy on cheating.

Any student found cheating will fail the entire course and receive a misconduct sanction in the School of Computing. A student with two sanctions will no longer be able to take SoC courses. 

Additional Resources

Student Success The University of Utah has a number of offices to help you be successful. Please look over this collection of resources: https://studentsuccess.utah.edu/resources/student-support/ (Links to an external site.)

Students with disabilities The University of Utah seeks to provide equal access to its programs, services and activities for people with disabilities. If you will need accommodations in the class, reasonable prior notice needs to be given to the Center for Disability Services (http://disability.utah.edu (Links to an external site.)Links to an external site.). CDS will work with you and the instructor to make arrangements for accommodations. Accommodations cannot be given without paperwork from this office.

Addressing Sexual Misconduct. Title IX makes it clear that violence and harassment based on sex and gender (which includes sexual orientation and gender identity/expression) is a civil rights offense subject to the same kinds of accountability and the same kinds of support applied to offenses against other protected categories such as race, national origin, color, religion, age, status as a person with a disability, veteran’s status or genetic information. If you or someone you know has been harassed or assaulted, you are encouraged to report it to the Title IX Coordinator in the Office of Equal Opportunity and Affirmative Action, 135 Park Building, 801-581-8365, or the Office of the Dean of Students, 270 Union Building, 801-581-7066. For support and confidential consultation, contact the Center for Student Wellness, 426 SSB, 801-581-7776. To report to the police, contact the Department of Public Safety, 801-585-2677(COPS).

Student Names & Personal Pronouns Class rosters are provided to the instructor with the student’s legal name as well as “Preferred first name” (if previously entered by you in the Student Profile section of your CIS account). Please advise me of any name or pronoun changes (and update CIS) so I can help create a learning environment in which you, your name, and your pronoun will be respected. If you need assistance getting your preferred name on your UIDcard, please visit the LGBT Resource Center Room 409 in the Olpin Union Building, or email bpeacock@sa.utah.edu to schedule a time to drop by. The LGBT Resource Center hours are M-F 8am-5pm, and 8am-6pm on Tuesdays.

Student Wellness Personal concerns such as stress, anxiety, relationship difficulties, depression, cross-cultural differences, etc., can interfere with a student’s ability to succeed and thrive at the University of Utah. For helpful resources contact the Center for Student Wellness at www.wellness.utah.edu or 801-581-7776.

Veterans Center If you are a student veteran, the U of Utah has a Veterans Support Center located in Room 161 in the Olpin Union Building. Hours: M-F 8-5pm. Please visit their website for more information about what support they offer, a list of ongoing events and links to outside resources: http://veteranscenter.utah.edu/. Please also let me know if you need any additional support in this class for any reason.

Learners of English as an Additional/Second Language If you are an English language learner, please be aware of several resources on campus that will support you with your language and writing development. These resources include: the Writing Center (http://writingcenter.utah.edu/); the Writing Program (http://writing-program.utah.edu/); the English Language Institute (http://continue.utah.edu/eli/). Please let me know if there is any additional support you would like to discuss for this class.

This syllabus is not a contract. It is meant to serve as an outline and guide for your course. Please note that your instructor may modify it to accommodate the needs of your class.