Montana Tech of The University of Montana
Computer Science Department

CSCI 135
Fundamentals of Computer Science I
Fall 2021



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 Introducing Python: Modern Computing in Simple Packages, 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 try some of the exercises at the end of the chapter yourself. (This will not be graded but will help solidify your understanding of the material.)

#DateModuleTopicSlidesVideosReadingPractice ExercisesExamples
0 Mon. 8/23 Introduction Course Mechanics PDF0
- Wed. 8/25 LAB 0: Hello Python!
1 Fri. 8/27 Introduction to Python:
Python Basics
Programming Basics
Computer Basics
Programs and Languages
IDLE
Algorithms
PDF1 Hello.py Input.py





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


PDF2



Video1


Video2



Chapters 2-3 2.1, 2.2, 2.3, 2.4 StringDemo.py IntegerDemo.py FloatDemo.py BooleanDemo.py LeapYear.py StringConcat.py
- Wed. 9/1 LAB 1: Hello Arguments!
3 Fri. 9/3 Controlling Execution Order:
Conditionals
if Statement PDF Chapter 4 4-1, 4-2 LeapYear.py OneWayIf.py TwoWayIf.py IfElse.py Months.py Indent.py Booleans.py Random.py Unicorn.py Ternary.py
- Mon. 9/6 NO CLASS - Labor Day Holiday
- Wed. 9/8 LAB 2: Conditional Selections
4 Fri. 9/11 Controlling Execution Order:
Loops / Iteration
while Loop
for Loop
PDF Video Supplemental for those who can't attend class Chapter 6 6-1 through 6-3 Summation.py Powers2.py SummationFor.py StarTriangle.py BreakDemo.py
5 Mon. 9/13 Input / Output (I/O):
Text I/O
Screen Output
Interactive Input
Command Line Input
File Input
PDF slides 1-15 PrintSameLine.py FormattedPrinting.py FloatingPointPrint.py IntegerPrint.py IntegerFlags.py StringPrinting.py PrintGoneBad.py AvgNumsFile.py AvgNumsFile_2.py squares.txt
- Wed. 9/15 LAB 3: Pick Teams
6 Fri. 9/17 Introduction to Python:
Lists / Arrays
Declaration
Creation
Initialization
Accessing Elements
Modifying Elements
List Operations
PDF Zombie1.py Zombie2.py CountEntries.py Backwards.py 4words.txt backward.txt ListBehavior.py ZombieGame.py
7 Mon. 9/20 Introduction to Python:
Working with Lists / Setting up a Problem
Working with Lists
Operations on Lists:
Multidimensional Lists
Example Problem
PDF Assignment.py Insertion.py Remove.py Rearrange.py Membership.py Comprehension.py ForLoop.py Matrices.py Encrypt.py Decrypt.py
- Wed. 9/22 LAB 4: Printf and Lists
8 Fri. 9/24 Input / Output (I/O):
Graphics and Audio
StdDraw
StdAudio
PDF Video Make sure you have all of these files saved into the same folder so that files dependant on others can find eachother. 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
9 Mon. 9/27 Practice with Graphics

Command Window
PDF

PDF2
Video

Video2
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/29 LAB 5: Programming Review Review1
Review2
11 Fri. 10/1 Slides Review for Midterm Outline

PDF
Question 4 using a for loop to iterate through a string will not be covered this exam.
12 Mon. 10/4 FILE IO
- Wed. 10/6 MIDTERM EXAM Exam
13 Fri. 10/8 Problem Decomposition:
Functional Decomposition
Functions
  Library Functions
  User Defined Functions
  Calling a Function
Flow of Control
PDF Chapter 9 DiceRolling.py FunctionJumping.py PassByVal.py AverageList.py Vote.py VoteFunctions.py VoteHelper.py
14 Mon. 10/11 Problem Decomposition:
Functional Decomposition
Breaking a Problem into Parts PDF ExtraCredit Fraction0.py Fraction1.py Fraction.py Fraction2.py FinalFraction.py
15 Fri. 10/15 Object Oriented Programming:
Classes
Creating Your Own Data Types
self
Client Programs
Static Objects
PDF Video StdDraw.py color.py stdarray.py stdio.py

Circle.py LimitedCircleClient.py CircleClient.py CircleClientDeluxe.py CircleClientSuperDeluxe.py
16 Mon. 10/18 Object Oriented Programming:
Inheritance
Advantages
Subclasses and Superclasses
PDF Video StdDraw.py color.py stdarray.py picture.py stdio.py

Circle.py BouncingCircle.py BouncingCircleClient.py BouncingImage2.py BouncingImage3.py BouncingImageClient.py BouncingImagePolyClient.py BouncerClient.py Bouncers.py dont_panic.png dont_panic_40.png
17 Fri. 11/5 Object Oriented Programming:
Designing Data Types
Data Encapsulation Model:
  Class/Client/API
Accessors
Mutators
PDF Circle.py CircleClient2.py
bank
19 Fri. 10/22 When Things Go Wrong:
Exceptions
Defending Against Bad Input
Handling Unexpected Events
PDF AddNums1.py AddNums2.py AddNums3.py AddNums4.py AvgNumsFile1.py AvgNumsFile2.py UserDefinedExc.py AvgNumsFile3.py

squares.txt TaleOfTwoCities.txt mobydick.txt
20 Mon. 10/25 When Things Go Wrong:
Debugging
Finding and Preventing Bugs PDF Factors0.py Factors1.py Factors2.py Factors3.py Factors4.py Factors5.py
18 Fri. 11/12 Object Oriented Programming:
Designing Data Types
More Design Considerations:
  Software Life Cycle
  Finding the Nouns
  Finding the Verbs
PDF Video1
Video2
21 Mon. 11/15 Binary PDF
22 Fri. 11/19 Hex PDF
23 Mon. 11/22 Reprieve - No New Material!
Work on lab.
24 Mon. 11/29 Reprieve - No New Material!
Work on lab.
- Wed. 12/1 Work on lab.
25 Fri. 12/3 Testing and Final Review Testing PDF
Review Outline
TestMe.py TestMeWithUnitTests.py TestIsLegalURL.py
- Fri. 12/10 Final Exam
8-11am NRB 228
Program 1
pal.py
Final Exam Answer Key(hidden)
Program 2
scores.txt
shuffle.py


Page last updated: December 10, 2021