This repository contains a compilation of homework problems and assignments for the CIS 61 course. The course emphasizes a problem-solving approach to computer programming, focusing on advanced programming concepts and the application of Python as the primary programming language.
This course is designed to provide a comprehensive understanding of programming principles with a specific focus on:
-
Expressions and Functions
-
Programming Environments
-
Higher-Order Functions
-
Recursions
-
Trees
-
Sequences and Data Abstraction
-
Linked Lists
-
Iterators and Generators
-
Programming Efficiency and Growth
-
Classes and Objects
-
Inheritance and Interfaces
-
Scheme – Macros and Streams
-
Declarative Programming – SQL
Please note that this course is structured for students with prior programming experience and algebra-level math proficiency. It is not an introductory programming course and is distinct from CIS-6.
Early preparation is highly recommended for students new to Python or programming in general. Resources such as LearnPython.org and the Socratica YouTube channel offer excellent tutorials to familiarize yourself with Python before the course starts.
To engage effectively in this course, it is essential to have the following tools:
-
Python 3: Download from Python.org - We will use Python 3 in this course.
-
Sublime Text Editor: Download from Sublime Text - Free to download and use.
The recommended textbook for this course is available for free download from UC Berkeley. The book is a Python adaptation of the classic Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman. Access the textbook here.
The repository contains various homework problems and assignments arranged in separate directories, each representing a specific task or problem set. You will find problem statements, solution files, and additional resources necessary for completing the assignments.
Feel free to navigate through the folders to review the problem statements, explore the solutions, and deepen your understanding of the programming concepts covered in this course.