An introduction to computer programming and problem solving using computers. This course teaches you how real-world problems can be solved computationally using programming constructs and data abstractions of a modern programming language. Concepts and techniques covered include variables, expressions, data types, objects, branching, iteration, functions, classes, and methods. We will also cover how to translate problems into a sequence of instructions, investigate the fundamental operation of a computational system and trace program execution and memory, and learn how to test and debug programs. No previous programming experience required.
R1 (or a score of 20 or higher on the math placement test Part A), or one of the following courses: MATH 101&102 or MATH 104 or MATH 127 or MATH 128 or MATH 131 or MATH 132.
Statement of Inclusivity
The staff for this course support the UMass commitment to diversity, and welcome individuals regardless of age, background, citizenship, disability, sex, education, ethnicity, family status, gender, gender identity, geographical origin, language, military experience, political views, race, religion, sexual orientation, socioeconomic status, and work experience. In this course, each voice in the classroom has something of value to contribute. Please take care to respect the different experiences, beliefs and values expressed by students and staff involved in this course.
The objective of this course is to introduce the fundamentals of computing and programming using a general-purpose programming language from a modern perspective. This includes understanding the operation of a machine from a programming language perspective and what it means to execute a whole program as well as its individual parts, how to solve problems using constructs that a programming language provides such as variables, data types, objects, branching, iteration, functions, and classes, and how to write programs that receive data from various sources, process that data, and produce output in various forms.
At the completion of this course you will be able to:
- Read and write programs to solve non-trivial programs using the Python programming language.
- Describe fundamental units of computation and program structure.
- Translate real-world problems into computational solutions.
- Solve problems using a general-purpose programming language and the tools it provides such as variables, data types, objects, branching, iteration, functions/methods, and classes.
- Design and implement whole programs and functions to solve computational problems using top-down and bottom-up techniques.
- Describe application programming interfaces (API) and use APIs available from existing objects and libraries to solve problems.
- Translate data from and into various formats that are in computer memory, a graphical interface, a file, from a remote API on the web, or other data resources.
- Use console-based or graphical interfaces to learn about input/output to move data into and out of a program.
- Use modules and classes to organize data and functions.
- Explain the notion of a machine and how it relates to the execution of a general-purpose programming language.
- Explain how programs and their data are represented in a computer and build mental models and use diagrams of program and function execution and data stored in memory.
- Use basic debugging techniques such as “print debugging” and assert statements to determine the cause of logical programming errors and show the correctness of a program and its implementation.
- Describe programs using proper documentation techniques to communicate implementation details at various levels of granularity.
Lecture will begin with a brief review of what was covered in the previous lecture followed by a presentation of new material. This presentation may include slides as well as code demonstrations that you will have access to as part of the course material. This will often be followed by an exercise that will help solidify your understanding of the material.
Lab will have an associated assignment that you are required to complete. You are expected to complete these activities during the lab working with others taking the course. Course staff will be available to answer questions and help guide you through the assignment.
How to Succeed
Your success in this class is important to us. We all learn differently and bring different strengths and needs to the class. If there are aspects of the course that prevent you from learning or make you feel excluded, please let us know as soon as possible. Together we’ll develop strategies to meet both your needs and the requirements of the course. There are also a range of resources on campus, including:
- Academic Calendar
- Learning Resource Center
- Center for Counseling and Psychological Health (CCPH)
- English as a Second Language (ESL) Program
The following textbook is required:
- Programming in Python 3, an interactive textbook from zyBooks designed specifically for this course.
The information you need to subscribe to this book can be found on the course LMS (e.g., Moodle).
Here are some additional textbook recommendations freely available online. You may consider looking at these as supplemental material:
- Automate the Boring Stuff with Python, Al Sweigert, https://automatetheboringstuff.com
- A Byte of Python, https://www.gitbook.com/book/swaroopch/byte-of-python/details
- Dive into Python, Mark Pilgrim, http://getpython3.com/diveintopython3
- Learn python the hard way, Zed Shaw, http://learnpythonthehardway.org/book
- Python Practice Book, Anad Chitpothu, http://anandology.com/python-practice-book
It is highly recommended that you have a laptop computer. We will be writing code both in and out of class, so a portable computer capable of installing software (not a Chromebook) is valuable for this class. Most in-class programming activities will be group-based, so if you do not own a laptop, you can easily work with another student in class.
Software Platforms and Tools
We will use the Moodle Learning Management System (LMS) as the primary hub for course content. You will be able to access readings, lecture material, assignments, and any other important material pertaining to this course. We may use Moodle to submit some assignments. You will be able to access your latest grades and comments for assignments using the Moodle Gradebook.
The textbook for this course is available from zyBooks. Not only is zyBooks the book for the course, but it also includes visual and interactive content that increases your understanding of the material. It provides participatory content, challenge exercises, and a Python programming environment built right into the book!
We use Gradescope for automatically grading programming projects. Gradescope allows us to provide fast and accurate feedback on your work. Before the deadline you can submit as many times as you need, so submit early and often to ensure you have something in before the deadline. Become familiar with Gradescope and verify that your submission has been properly uploaded before the deadline. Use OneDrive, DropBox, Google Drive, or some other backup software to ensure that your work is not lost in the event of a computer failure. The Gradescope autograder will provide you with some limited feedback on your submissions: does it compile, does it pass automated tests, what your score is, etc. The autograder does not provide detailed feedback. We will help you get familiar with Gradescope as the course progresses.
We use the VSCode Development Environment for developing, debugging, and testing programming projects. This is free software and you will be given installation instructions and training in its use. There are many excellent Python integrated development environments (IDE), editors, and tools that exist, however, we recommend VSCode as it is easy to learn, and we will be using it in class for code demonstrations. You can read more about VSCode here and we encourage you to try out the “Getting Started with Python in VSCode” as preparation for the class.
We will be using the Python programming language in this course. It is an excellent language to learn about programming and computational thinking. It is also used extensively in the software engineering, data science domain, and many additional areas of computing. You will be required to download and install Python on your own computer. You will be using Python and VSCode to complete many programming tasks as part of your studies in this class. The current Python version used in this course is 3.10.6.
All lectures will be recorded and posted to the Echo360 platform. Echo360 is a plug-in tool that integrates personal and classroom video capture, student engagement tools, and analytic tools to maximize student participation and engagement for both campus-based and online courses. A link to Echo360 will be available in the course LMS.
Email should not be used. Please post privately to Instructors on Piazza.
In the unlikely event that you are unable to post to Piazza, please send an email to the instructor teaching your course section.
We will be using Piazza for all other communication. This online discussion forum should be your first choice for asking questions. You should check the discussion forum before asking your question to see if the same question has already been posted. We will not answer questions that have already been answered in the discussion forum. Think before you post. We expect you to do a reasonable amount of thinking to try to solve your problems before posting for help. Make sure you are articulate and clear with your post (i.e., think before you post). You should post questions related to assignments early rather than wait until the last minute. Questions that are posted very near an assignment deadline may not be answered. Course staff are expected to answer questions Monday through Friday. Do not expect prompt answers on Saturday, Sunday, and scheduled holidays and breaks.
Please post with respect and kindness. Posts that are disrespectful, crude, inappropriate, or mean will not be tolerated and will be reported and result in your immediate removal from the course and a failure for the course.
We expect you to attend lectures and labs on a regular basis. If you are absent or miss deadlines for health reasons or other extenuating circumstances, you will be able to view the lectures online as they will all be recorded on echo360. If you do miss class or lab and there is an assignment to complete you must notify us as soon as possible and, if you seek excusal from an assignment or require an extension, to provide written documentation.
Assessment and Grading
The final grade for this course is broken down into the following categories and weights:
- 10% Participation
- 10% Quizzes
- 20% Labs
- 40% Homework
- 20% Capstone Project
The numerical cutoff for final course letter grade assignment will be made after all grading is completed. As a rough guide, expect to require at least a 93 to get an A, a 90 to get an A-, an 87 to get a B+, an 83 to get a B, an 80 to get a B-, etc.
Individual grade items are not curved, so you should not get stressed about means, standard deviations, etc. related to scores you receive. What matters is your weighted average; we do not give favorable (or unfair) treatment by raising or lowering individual students’ letter grades.
There are no opportunities for extra credit in this course; please do not ask.
You are responsible for monitoring your grades. Grades will be available through Moodle and you should check them regularly and review any provided feedback. If you encounter any issues with your grades, you will have one week past the first posting of a particular assignment’s grade to Moodle to contact the course staff so that we can investigate.
This course uses a standards-based grading system. Our goal is to shift focus from grades to learning. Educational researchers developed a five-point scale to more clearly assess what a student knows and can do, which we will follow for all activities in this course:
- 4: Exceeding Standards, Consistently exceeds expectations for skills and understanding
- 3: Meeting Standards, Consistently meets expectations for skills and understanding
- 2: Approaching Standards, Meets some expectations for skills and understanding
- 1: Below Standards, Meets few expectations for skills and understanding
- 0: No Submissions, Did not submit assignment
What is standards-based grading? Why the shift from traditional grades?
We believe that grades should communicate, as clearly as possible, what students know and can do. We also seek to create a growth mindset environment that encourages students to take risks and to embrace mistakes as learning opportunities. Standards-based grading and the corresponding five-point scale are set up to support these two values by clarifying learning goals and assessing students on their progress towards meeting those goals, rather than prioritizing completion of tasks and assignments over learning. This allows for more meaningful student learning and teacher feedback, and moves away from an approach in which students are seeking to earn points rather than practicing to meet the learning goal.
What does this look like in practice?
Students will receive assignment and final grades on the 0-4 scale: students will not receive letter grades (A, B, C, D) on assignments or fine-grained percentages. We will map our scale to letter grades for submission the the University at the end of the semester.
Grades are clearer to students: Teachers and students engage in conversation about what 4/3/2/1/0 work looks like, so students understand what is expected and what they are learning.
Grades are more useful and meaningful: When students get clear grades and feedback on a five point scale, they can monitor their progress and set goals for their learning. Teachers can also provide more specific feedback on how to improve from a “3” to a “4”.
For assignments that do give you a more granular number of points, we will try to articulate in the assignment description/instructions how many points map to what level on the 5-point scale.
Those thresholds will be based on things like completing a set number of exercises or completing the more straight-forward exercises, for instance.
You will be assigned participation exercises to complete as part of the reading. These exercises exist inside of our online textbook, zyBooks, and you are expected to complete them by the assigned due date. You may not request an extension to the due date for these assignments.
There will be a weekly quiz that focuses on the material covered prior to the release of each quiz. These quizzes are cumulative. You are able to take the quiz as many times as necessary to achieve a 100%. Quizzes contain multiple choice style questions covering material from lecture, the reading, and possibly labs and assignments. You may not request an extension to the due date for these assignments.
Lab assignments are low-stakes exercises that are designed to allow you to practice your understanding of the material covered in the book and during lecture in the presence of the course staff in a collaborative setting. You will need to bring a laptop if you have one or work with another student. If you do not have a laptop, please notify the course staff so we can make arrangements for you to work with another student.
Homework assignments require you to solve computational problems using the Python programming language. You will be presented with a number of different challenges that will require you to understand the problem, this how to solve that problem computationally, and implement an algorithm using Python to solve that problem. You will have a homework approximately every week.
You will be required to design and implement a Python program to solve a problem of your choice. The capstone project will be assigned and submitted toward the end of the semester. You will have the freedom to use any aspect of Python you learned in this course in your solution. On the last day of class we will have a poster session where you will have the opportunity to showcase your project to other students as well as see projects produced by others.
Late and Early Submissions
Lateness General Guidelines
Lateness is defined as any assignment that is outside of the stated due date requirements. We allow assignments to be submitted three days “late” after the posted due date. However, penalties might be applied (see Submission Currency below). After the three days we will not accept a submission from any assessment component. It is your responsibility for maintaining your own schedule and being prompt with your submissions. We expect that you become familiar with the course submission software and verify that your submission has been properly uploaded. We will not accept late submissions due to lack of checking on this. We assume:
- You are an adult and have the ability to check and verify your work has been received properly.
- You are capable of using GitHub, DropBox, Google Drive, or some other backup software to ensure that your work is not lost in the event of a computer failure.
- You have a back-up plan in place in the event that your computer fails or your internet connection is unavailable. Make sure you have a plan B and C if your computer crashes or your internet is unavailable. This is your responsibility.
- To ensure that you submit projects on time you should begin them early and not wait until the last minute to submit. You will be able to submit multiple times so submit early and often to ensure you have something in before the deadline.
If there are extenuating circumstances beyond your control that prevent you from completing an assignment by the posted deadline you must contact the instructor immediately using the appropriate communication channel (see Communication below).
Submission Currency 💵
To add some flexibility to submission deadlines, we will be using a form of “currency” in this course to earn “tokens” for submissions that are made before the day an assignment is due. If you submit an assignment on or before the deadline you will receive a token. You may then use a token to buy a late day allowing you to submit an assignment past the deadline. If you submit an assignment late and you run out of tokens, you may borrow tokens putting you in the negative. To get out of the hole you will need to submit subsequent assignments on time or early to earn tokens back and pay your debt!
If you complete the course with leftover tokens it will be applied to your final grade and increase your overall grade for the course. If you complete the course with negative tokens it will be applied to your final grade and decrease your overall grade for the course.
✨ Caveat: you will only earn a token if your submission is at least Meeting Standards. Anything below is not considered to be token-level quality. ✨
- You start the semester with 3 tokens.
- A submission before or on a due date earns you 1 token.
- You can optionally apply a token for each day late up to 3 days.
- You can decide not to use tokens for late days. We reduce your assignment score by 1 for each day late (e.g., -1).
- After 3 days late an assignment and/or tokens will not be accepted.
- You can hold a maximum of 5 tokens at any time.
- You can earn tokens from homeworks only.
- You can apply tokens to homeworks and labs.
Submissions, Gradescope, and Token Application
The submission you choose to activate on gradescope is the submission we use. If your active submission is after the due date, and you do not report that your want to use tokens by submitting the token application form, we apply the late policy of -1 to your assignment submission per late day. You must submit a token application form to apply tokens to an assignment. The token application form is available on Moodle.
- At the start of the semester Mia submits the first assignment two days early and receives a token increasing their purse to 4.
- In the middle of the semester Pat is late by 2 days. Pat decides to use 2 tokens from their purse. This is not bad since Pat hasn’t missed an assignment. Pat has 1 token remaining.
- At the end of the semester Jorge has 3 tokens and their grade is a B+. The tokens are applied and their final their final grade ends up as an A. Jorge is happy. 😃
- At the end of the semester Tanya has -2 tokens and their grade is an A-. The tokens are applied and their final grade is an B+. Tanya is unhappy 😔, but understands.
You are ultimately responsible for maintaining your token count. We will do our best to calculate the number of tokens you have for each assignment. However, it may take a few days to do so.
When an assignment is submitted as a group, all group members earn a token if submitted before or on the date the assignment is due. If the assignment is submitted late, each group member can decide if they want to use tokens to pay for the late days or get marked down on the individual assignment.
Typically, a course is completed after the last class, final exam, and/or final project or assignment. In rare cases, extenuating circumstances may prevent a student from completing a course by that time. As part of the University Regulations, we may issue an Incomplete (INC) for a course, rather than a course grade, if a student submits a request to the instructor(s). The criteria for granting an INC request are determined by the course instructors. The following is an excerpt from Section VI D in the Academic Regulations:
“Students who are unable to complete course requirements within the allotted time because of severe medical or personal problems may request a grade of Incomplete from the instructor of the course. Normally, incomplete grades are warranted only if a student is passing the course at the time of the request and if the course requirements can be completed by the end of the following semester. Instructors who turn in a grade of "INC" are required to leave a written record of the following information with the departmental office of the academic department under which the course is offered: (1) the percentage of work completed, (2) the grade earned by the student on the completed work, (3) a description of the work that remains to be completed, (4) a description of the method by which the student is to complete the unfinished work, and (5) the date by which the work is to be completed. In the case of an independent study where the entire grade is determined by one paper or project, the instructor should leave with the department information pertaining to the paper or project, which will complete the course. To avoid subsequent misunderstanding, it is recommended that the student also be provided with a copy of this information.”
The incomplete criterion for this course requires that you have:
- At least 60% of the course must be completed with a passing grade.
- A valid reason for requesting an INC that relates to a severe medical or personal problem
Towards the end of the semester a notification will be posted about incomplete requests. You will follow the instructions provided to submit an incomplete request. After we review the request, we will make one of the following determinations:
We approve the request upon which you will be notified by email and a separate incomplete agreement document will be sent to you to read through and sign no more than 48 hours after receiving the incomplete agreement document. This document will include what remains to be completed for the course and a deadline. After you sign and return this document, we will open extensions for the missing work. After the course has ended, we do not provide any additional help or support regarding the specifics of the course material. You are expected to complete the work using the material and online platforms that were available to you when the course was active.
We deny the request and submit a grade based on your performance at the end of the course.
Office hours are times when we provide real-time access to the instructor, TAs, and UCAs. You do not need an appointment to attend office hours, attendance is optional, and all questions you have about the course are welcome. These sessions will be held at different times during the week. Office hours will be posted on the course website. Office hours will be held both in person and on Zoom.
The University of Massachusetts Amherst is committed to providing an equal educational opportunity for all students. If you have a documented physical, psychological, or learning disability on file with Disability Services (DS), you may be eligible for reasonable academic accommodations to help you succeed in this course. If you have a documented disability that requires an accommodation, please notify your instructor as soon as possible so that we may make appropriate arrangements. For further information, please visit Disability Services (https://www.umass.edu/disability).
If you have been the victim of sexual violence, gender discrimination, or sexual harassment, the university can provide you with a variety of support resources and accommodations. UMass is committed to providing these resources with minimal impact and costs to survivors on a case-by-case basis. Resources are available to survivors with or without them filing a complaint. No upfront costs are charged to any currently enrolled students for University Health Services or the Center for Counseling and Psychological Health, and no fees exist for services in the Dean of Students Office, the Center for Women and Community, Student Legal Services, or by live-in residential staff.
General Education Requirements
CICS 110 is a 4-credit General Education course that satisfies the R2 (Analytic Reasoning) general education requirements for graduation. The General Education Program at the University of Massachusetts Amherst offers students a unique opportunity to develop critical thinking, communication, and learning skills that will benefit them for a lifetime. For more information about the General Education Program, please visit the GenEd webpage.
General Education Learning Outcomes
The General Education Program has four common objectives that pervade all designations. INFO 190S satisfies the following General Education objectives:
Content: Students will know fundamental questions, ideas, and methods of analysis in computing. In particular, students will learn how to problem solve using a modern programming language, apply programming and problem solving to real world problems.
Critical Thinking: Students will apply and demonstrate creative, analytical, quantitative, & critical thinking through inquiry, problem solving, & synthesis. Students will use critical thinking skills to solve problems from a computational perspective. As part of the problem-solving process students will use logical reasoning to create algorithms and data structures to develop programs that put their solutions into action. Furthermore, students will investigate aspects of performance and comparisons of equivalent algorithms to draw conclusions on efficiency. Lastly, students will explore and ask questions about real world problems and apply various forms of data analysis to answer these questions.
Communication: Students will develop their writing skills through various assignments that require an articulation of their solution. They will also practice their oral communication by demonstrating their work (i.e., explaining an algorithm or technique) through a recorded video that will be part of assignment submissions.
Connections: Students will connect the material in this course to real world problems such as using programming techniques to predict population size in the future and how that relates to pollution as well as many other issues that exist today. The goal of this course is to intentionally provide a connection between the concepts that are covered and how it impacts the world. This course is not only about learning how to program, it is about how to code to answer questions and to push forward and investigate how to construct solutions to solve problems.
R2 Learning Outcomes
This course will satisfy the R2 learning outcomes. In particular, it will advance student’s formal reasoning skills beyond the basic competency level by having them solve programming challenges on a weekly basis using a programming language. This will also increase a student’s sophistication as a consumer of numerical information as they must have a fundamental understanding of how a computer represents information (numerical or otherwise) in a discrete environment. Clearly, computer literacy is established in this context and naturally the limits of formal methods and the abuse of numerical arguments will be covered as part of developing programs and solving problems in general.
The university suggests that students spend 3-4 hours of time on a class per credit hour. This is a 4-credit course, so you should plan to spend 12-16 hours a week on this course. In a typical week you will:
- Attend 2 75-minute lectures (unless there is a holiday or class is canceled for any reason)
- Attend 1 50-minute lab (unless there is a holiday of lab is canceled for any reason)
- Complete participation exercises if some are due that week.
- Optionally attend office hours.
- Complete a lab assignment if one is due that week.
- Complete a homework assignment if one is due that week.
- Complete a quiz if one is due that week.
Code of conduct
- The course staff are committed to providing a friendly, safe and welcoming environment for all, regardless of level of experience, gender identity and expression, sexual orientation, disability, personal appearance, body size, shape, race, ethnicity, age, religion, nationality, or other similar characteristics.
- Please be kind and courteous. There’s no need to be mean or rude.
- Respect that people have differences of opinion and that differing approaches to problems in this course may each carry a trade-off and numerous costs. There isn’t always a single right answer to complicated questions.
- Please keep unstructured critique to a minimum. Criticism should be constructive.
- We will informally warn you, once, if you insult, demean or harass anyone. That is not welcome behavior. After that we will report your behavior to the Dean of Students office. We interpret the term “harassment” as including the definition in the Citizen Code of Conduct under “Unacceptable Behavior”; if you have any lack of clarity about what might be included in that concept, please read their definition and then ask us for clarification. We don’t tolerate behavior that excludes people in socially marginalized groups.
- Private harassment is also unacceptable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a member of this class, please contact a member of the course staff immediately (or if you do not feel safe doing so, you should contact the Chair of the Faculty of CICS). Whether you’ve been at UMass for years or are a newcomer, we care about making this course a safe place for you and we’ve got your back.
- Likewise, any spamming, trolling, flaming, baiting or other attention-stealing behavior is not welcome.
- Group Work Encouragement: Students are encouraged to work in groups to facilitate learning, knowledge sharing, and skill development. Group work will be a regular part of the course and students are expected to actively participate in it. Group work is allowed on all assignments in this course. You are allowed to submit an assignment as a group of up to 4 collaborators.
- Individual Submissions: Although group work is encouraged, each student is required to submit their own individual work based on the group collaboration. This is to ensure that each student is held accountable for their own learning and understanding of the course material.
- Group Responsibilities: All group members are expected to contribute equally to the group discussions and work and should be prepared to share their knowledge and skills with their peers. Group members should also be respectful of each other's opinions and work styles.
- Conflict Resolution: In the event of a conflict within the group, students are encouraged to communicate and resolve the issue amongst themselves. If the conflict cannot be resolved, the instructor will mediate.
- Credit Allocation: Credit for group work will be allocated based on each student's individual contribution to the assignment. Students will assess their own contributions to submitted assignments and determine their grades accordingly.
- Cheating: Cheating, including plagiarism, is not tolerated and will result in a failing grade for the assignment. All work submitted must be original and should accurately reflect the student's own understanding of the course material.
- Communication: Regular communication between group members is essential for successful collaboration. Students are encouraged to use online tools, such as email or group chat platforms, to stay in touch and communicate effectively.
By following this collaboration policy, students will be able to work collectively while still being held accountable for their individual learning and understanding of the course material.
As students of the Manning College of Information and Computer Sciences, it's important to understand the judicious use of AI technologies like ChatGPT in your homework assignments and projects. While these tools can be a valuable resource in your learning journey, it's essential to use them in a responsible and ethical manner.
In this course, we allow the use of AI technologies like ChatGPT as a means of learning and improving your understanding of the subject matter. However, it's important to remember that the work you submit must be original and created by you, the student. Submitting work that is not your own constitutes academic dishonesty and is a violation of the code of conduct in this course.
The use of AI technologies like ChatGPT should be seen as a tool for assistance, not a substitute for your own efforts. While it's tempting to rely solely on these tools to complete your assignments and projects, doing so will not help you develop the critical thinking and problem-solving skills that are essential for success in computer science.
In conclusion, while we encourage the use of AI technologies like ChatGPT in your learning journey, it's important to use them responsibly and ethically. The work you submit must be original and created by you, and the use of these tools should be seen as a means of assistance, not a substitute for your own efforts. By doing so, you'll be able to make the most of these tools and develop the skills and knowledge you need to succeed in computer science.