MCS 275: Programming tools and file management
University of Illinois at Chicago
About the course
This course is a second semester of study in introductory computer science, designed for students who have
completed CS 107, CS 109, CS 111, or MCS 260.
In this course we focus on learning the Python programming language more deeply, including the
use of popular add-on modules for API development, databases, and data science. We also cover some
fundamental data structures and algorithms and their implementation in Python.
This is the public archival site for course materials from Spring 2021. The course site was originally located in UIC's Blackboard Learn LMS.
- Instructor: David Dumas
- Teaching assistant: Johnny Joyce
Many MCS 275 lectures involved constructing programs or iPython notebooks from scratch to demonstrate course material.
These can be found in the course GitHub repository.
Slides are available as HTML or PDF.
Some lectures have associated sample programs or data files. There is a GitHub repository that includes all of the sample programs. In the list below, the name of the sample program is a link to view the source code on GitHub (where there is nice syntax highlighting). The adjacent [⤓] link will download the source directly.
- Lecture 1 (Mon 10 Jan) - Introduction
- Lecture 2 (Wed 12 Jan) - Python tour part I
- Lecture 3 (Fri 14 Jan) - Python tour part II
- Lecture 4 (Wed 19 Jan) - OOP: Overloading
- Lecture 5 (Fri 21 Jan) - OOP: Inheritance
- Lecture 6 (Mon 24 Jan) - OOP: Inheritance II
- Lecture 7 (Wed 26 Jan) - Notebooks
- Lecture 8 (Fri 28 Jan) - Variadic functions and decorators
- Lecture 9 (Mon 31 Jan) - Decorators (continued)
- Lecture 10 (Wed 02 Feb) - Errors and debugging
- Lecture 11 (Fri 04 Feb) - pdb - The Python debugger
- Lecture 12 (Mon 07 Feb) - Recursion
- Lecture 13 (Wed 09 Feb) - Recursion vs Iteration
- Lecture 14 (Fri 11 Feb) - Recursion vs Iteration II
- Lecture 15 (Mon 14 Feb) - Recursion with backtracking
- Lecture 16 (Wed 16 Feb) - Mergesort
- Lecture 17 (Fri 18 Feb) - Quicksort
- Lecture 18 (Mon 21 Feb) - Comparison sorts
- Lecture 19 (Wed 23 Feb) - Trees
- Lecture 20 (Fri 25 Feb) - Binary Search Trees
- Lecture 21 (Mon 28 Feb) - BST and tree traversals
- Lecture 22 (Wed 02 Mar) - set and defaultdict
- Lecture 23 (Fri 04 Mar) - CSV and JSON
- Lecture 24 (Mon 07 Mar) - Pillow
- Lecture 25 (Wed 09 Mar) - Numpy
- Lecture 26 (Fri 11 Mar) - Numpy II
- Lecture 27 (Mon 14 Mar) - Julia sets
- Lecture 28 (Wed 16 Mar) - Matplotlib
- Lecture 29 (Fri 18 Mar) - Matplotlib II
- Lecture 30 (Mon 28 Mar) - SQL and SQLite
- Lecture 31 (Wed 30 Mar) - Crash course on machine learning
- Lecture 32 (Fri 01 Apr) - SQL and SQLite II
- Lecture 33 (Mon 04 Apr) - HTML and CSS
- Lecture 34 (Wed 06 Apr) - Planning our web app
- Lecture 35 (Fri 08 Apr) - HTTP and Flask
- Lecture 36 (Mon 11 Apr) - Using Flask
- Lecture 37 (Wed 13 Apr) - Forms
- Lecture 38 (Fri 15 Apr) - Web app wrap-up
- Lecture 39 (Mon 18 Apr) - HTTP Requests
- Lecture 40 (Wed 20 Apr) - Parsing and scraping HTML
- Lecture 41 (Fri 22 Apr) - Beautiful Soup
- Lecture 42 (Mon 25 Apr) - argparse
- Lecture 43 (Wed 27 Apr) - Generators
- Lecture 44 (Fri 29 Apr) - Version control with git
The course included a weekly homework assignment collected using GradeScope. Solutions can be found here and in the GitHub repository
These documents describe the four larger coding projects assigned during the semester. The first three projects have fixed specifications and solutions are provided.