Computer Science
>
>

CICS 110: Foundations of Programming

Spring 2023

The University of Massachusetts Amherst

This course introduces computer programming and problem-solving. Students learn using a modern language, covering variables, data types, branching, functions, classes, and methods. Emphasis is on real-world problem translation, computational understanding, and debugging.

Course Page

Overview

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.

Prerequisites

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.

Learning objectives

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.

Learning Outcomes

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.

Textbooks and other notes

Textbook

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

Other courses in Computer Programming

Courseware availability

Lecture slides available at Lectures

No videos available

Assignments available at Assignements Labs available at Labs

Guides available at Guides

Covered concepts