Montana Tech of The University of Montana
Computer Science Department

CSCI 135
Fundamentals of Computer Science I
Fall 2020



SCHEDULE

This page lists the dates of all the lectures with links to slides and examples from the lecture (if any). Readings are in the electronic book Python Crash Course, 2nd Edition, which is availabe free and online through the library (see the resources tab on how to access it). To get the most out of lectures, skim the reading beforehand. You may also want to print out the slides before lecture so you can write on and/or highlight them during lecture. After the lecture, go back and read the pages carefully and do the book exercises. (These exercises are for your practice and not to be turned in or graded. It's still a good idea to do them to make sure you understand the material.)

#DateModuleTopicSlidesVideosReadingPractice ExercisesExamples
1 Mon. 8/17 Introduction Course Mechanics
Computing Basics
PDF1
PDF2
Video1
Video2
- Wed. 8/19 NO LAB - 1st week
2 Fri. 8/21 Introduction to Python:
Python Basics
Programming Basics
  Execution
  Idle Shell/Editor
  Program Parts
  Algorithms
Command Window
PDF1




PDF2
Video1




Video2
Hello.py Input.py





3 Mon. 8/24 Introduction to Python:
Variables and Data Types
Variables
Basic Data Types
Type Conversion
Operations on Data Types:
  Math
  Strings
  Boolean
PDF1


PDF2



Video1


Video2



Chapter 2 2-1, 2-2, 2-3, 2-4, 2-5, 2-6, 2-7, 2-8, 2-9 StringDemo.py IntegerDemo.py FloatDemo.py BooleanDemo.py LeapYear.py StringConcat.py
- Wed. 8/26 LAB 1: Hello Python! Video
4 Fri. 8/28 Introduction to Python:
Lists / Arrays
Declaration
Creation
Initialization
Accessing Elements
Modifying Elements
List Operations
PDF Video Chapter 3 3-1 through 3-9 Zombie1.py Zombie2.py CountEntries.py Backwards.py 4words.txt backward.txt ListBehavior.py ZombieGame.py
5 Mon. 8/31 Introduction to Python:
Working with Lists / Setting up a Problem
Working with Lists
Operations on Lists:
Multidimensional Lists
Example Problem
PDF Video Chapter 4 (can skip over section on Tuples) 4-1 through 4-12 Assignment.py Insertion.py Remove.py Rearrange.py Membership.py Comprehension.py ForLoop.py Matrices.py Encrypt.py Decrypt.py
- Wed. 9/2 LAB 2: Lists / Arrays Video
6 Fri. 9/4 Controlling Execution Order:
Conditionals / Selection
if Statement PDF Video Chapter 5 5-1 through 5-11 LeapYear.py ArgsExample.py OneWayIf.py TwoWayIf.py IfElse.py Months.py Indent.py Booleans.py Random.py Unicorn.py Ternary.py
- Mon. 9/7 NO CLASS - Labor Day Holiday
- Wed. 9/9 LAB 3: Selection Video
7 Fri. 9/11 Controlling Execution Order:
Loops / Iteration
while Loop
for Loop
PDF Video Chapter 7 7-1 through 7-7 Summation.py Powers2.py SummationFor.py StarTriangle.py BreakDemo.py
8 Mon. 9/14 Input / Output (I/O):
Graphics and Audio
StdDraw
StdAudio
PDF Video StdDraw.py color.py picture.py stdarray.py stdio.py StdAudio.py

AvgNumsFile.py squares.txt GraphicsPractice.py HelloDraw.py DrawShapes.py DrawShapesColor.py HelloScale.py DrawImage.py HelloSize.py HelloDraw.py BouncingImage.py BouncingImageKey.py BouncingImageKeyAudio.py

dont_panic.png frog.jpg frog.wav
- Wed. 9/16 LAB 4: Iteration and I/O Video
9 Fri. 9/18 Input / Output (I/O):
Text I/O
Screen Output
Interactive Input
Command Line Input
File Input
PDF Video StdDraw.py color.py picture.py stdarray.py stdio.py StdAudio.py

BasicPrinting.py PrintSameLine.py FormattedPrinting.py FloatingPointPrint.py IntegerPrint.py IntegerFlags.py StringPrinting.py PrintGoneBad.py AvgNumsFile.py AvgNumsFile_2.py squares.txt GraphicsPractice.py hitchhiker.txt dont_panic_40.png
10 Mon. 9/21 Practice with Graphics PDF Video StdDraw.py color.py picture.py stdarray.py stdio.py StdAudio.py

DrawShapes.py DrawShapesColor.py Face.py Checkerboard.py MooseDemo.py Moose.png BouncingImageKey.py dont_panic_40.png BouncingImageKeyAudio.py frog.jpg frog.wav DrawingDemo.py
- Wed. 9/23 LAB 4: Iteration and I/O - continued
11 Fri. 9/25 Problem Decomposition:
Software Development Life Cycle (SDLC)
SDLC Overview
Requirements
Design
Implementation
Testing
Release / Maintenance
12 Mon. 9/28 Review for Midterm
- Wed. 9/30 MIDTERM EXAM
13 Fri. 10/2 Problem Decomposition:
Functional Decomposition
Breaking a Problem into Parts
Functions
  Library Functions
  User Defined Functions
  Calling a Function
Flow of Control
14 Mon. 10/5 Problem Decomposition:
Data Decomposition
Finding the Nouns
Attributes
Methods (Verbs)
UML Diagrams
API - Application Program Interface
- Wed. 10/7 LAB 5: Functions
15 Fri. 10/9 Object Oriented Programming:
Classes
Creating Your Own Data Types
self
Client Programs
Static Objects
16 Mon. 10/12 Object Oriented Programming:
Inheritance
Advantages
Subclasses and Superclasses
- Wed. 10/14 LAB 6: Classes
17 Fri. 10/16 Object Oriented Programming:
Designing Data Types
Data Encapsulation Model:
  Class/Client/API
Accessors
Mutators
18 Mon. 10/19 Object Oriented Programming:
Designing Data Types
More Design Considerations:
  Immutability
  Object Equality
  Important Methods
- Wed. 10/21 LAB 7: Classes as Data Types
19 Fri. 10/23 When Things Go Wrong:
Exceptions
Defending Against Bad Input
Handling Unexpected Events
20 Mon. 10/26 When Things Go Wrong:
Debugging
Finding and Preventing Bugs
- Wed. 10/28 LAB 8: Exceptions
21 Fri. 10/30 When Things Go Wrong:
Testing
Software Quality
Levels of Testing
Black Box vs. White Box
22 Mon. 11/2 When Things Go Wrong:
Testing
Equivalence Classes of Tests
Regression Testing
- Wed. 11/4 LAB 9: Testing
23 Fri. 11/6 Case Study:
Problem Decomposition
24 Mon. 11/9 Case Study:
Problem Decomposition and Design
- Wed. 11/11 NO CLASS - Veterans Day Holiday
25 Fri. 11/13 Case Study:
Implementation and Testing
26 Mon. 11/16 Review for Final Exam
- Tues. 11/24, 8:00-10:00 FINAL EXAM


Page last updated: September 20, 2020