Week 1

MONDAY

Overview/Intro
Explain syllabus

Suggested topics:
Discuss prerequisites. Engineers should take other support course.


Why learn programming?

Why programming is more difficult than a typical college course. Anyone can succeed.
Course philosophy

Optional topics:
Lab Notebooks
Example course outcomes
Demo of Playlist Calculator (cp -i  ~cs101-1/Programs/songdata.txt  $HOME; ~cs101-1/Programs/playlistcalculator.exe)
Professional responsibilities lecture - I don't want to teach hackers.
Academic Integrity

WEDNESDAY

Lecture on Chapter 1

FRIDAY

Lecture on Chapter 1 (continue unfinished topics from Wed)

Lecture on Ch 2
Algorithms + data structures = programs
Program Structure - Fig 2.1 (pg 35)
Hand trace technique  "a representation of the dynamic behavior of static source code."

Suggested Topics

Evolution of Software

How to Study CSc 101 (Learning Strategies).  (Assign Ch 2 reading due before this topic, so students can compare their current study habits to those recommended).

Success Tips:


Week 2

MONDAY
Holiday

WEDNESDAY

Language Feature overview - C in a nutshell
Language comparison example: Fuel use - Compute Miles/Gallon in 6 languages

Why C in first course? Party Line:  multi-lingual, procedural, prep for upper division

Summary of Software Development Process - Ch 2 case study (pg 62)
How To Build a Program - a process for students

Debugging - Categories of Errors (Ch 2.8)

Suggested Topics/Examples
Example: Number Juggling from lab 1
Example: Calculating UPC check digit
Optional Topics:
Problem Analysis Strategies - Informal Requirements Gathering
Productivity Summary Form  and  Time Recording Log Form


FRIDAY

Lectures on Ch 7.1 - 7.3

Data types
Character, Integer, Floating Point, Fixed Point, Boolean, String
Type checking comparison

Numerical Inaccuracies (precision problems), Bad Money example.

Enumerated types 

Week 3

MONDAY

Lecture on Ch 3

Subprograms
Examples
Student in-class exercise:  Prediction exercise Ch3_1.c

Practice exercise: Eliminate redundancy in Hypotenuse Program by writing find_hypotenuse()

WEDNESDAY

Introduce Exploration Strategies

Sample explorations: RevenueTriangle

Subprograms (continued)
Practice: Write a function to convert Carats to Ounces, given 1 carat = 200mg,  1Kg = 2.2lb

FRIDAY

Review Coding Standards: Layout, Naming conventions, Comments, etc.

Subprograms (continued)
Functions Practice:  Pythagorean Triple Exercise

Algorithm Building Blocks: Sequence, Selection, Iteration
Exercise:  Identify the Building Block from a problem statement

Suggested Topics

Discussion: What makes good software?  (Background for coding standards discussion)


Week 4

MONDAY

Lecture on Ch 4.1  Logical Expressions

Forms of selection statements "if" statement readability issues

     Boolean operators: &&,|| vs AND, OR
     Uppercase keywords (if allowed)
     Braces: always!
     indenting
     Nested if vs sequence of if's

Optional Topics:
Pseudocode (pg 169):   Purpose and  Style guide
Structure Diagramming (N-S charts)


WEDNESDAY

Lecture

Test Plans for "if" statements

     Test plan demo: Today is a cold/nice/hot day example
     "Minimum Complete Coverage" - the minimum set of test data that guarantees that each branch in the program is
     executed at least once.
     Boundary cases.
     FindHypotenuse and GiveNotice examples

FRIDAY

Switch Statements (Ch 4.8)

IF and SWITCH statement pitfalls in C.  (CH 4.9)

Boolean Functions

"Decrease-and-conquer" Problem solving strategy: Reduce a complex problem to a simpler one. Math Aptitude test joke.

Week 5

MONDAY

Summary review of textbook chapter on iteration. (Taxonomy of loop structures)

Pseudocode for loops

Example of Iteration: Submarine Data Analysis (Solution in 5 languages)
Exercises with Iteration  (This could be a handout for in-class activity)

Table of Cubes data validation loops example (in Java; need to convert to C)

WEDNESDAY

Loop Cartoon

Directions for how to use the hand trace technique with iteration, and exercises.

Finding loop defects with a hand trace.

FRIDAY

Loop design problems

Strategy Tip: "Don't sweat the small stuff"


Under Construction

Week 6

MONDAY

Structured vs Unstructured loops; rationale, examples. 
Loop design problems (continued)

General Debugging techniques lecture (see notes)

WEDNESDAY

Midterm Exam

FRIDAY

*** Holiday ***

Week 7

MONDAY

Lecture Ch 6

WEDNESDAY

Structure Charts lecture (Ch 3.3 and Ch 6)

Incremental Implementation. See "LecPhases" notes.   Stubs and Executing Architecture

Examples:

FRIDAY

Lecture Ch 8 Introduction to arrays
Debugging and Testing (Ch 6.6)

Week 8

MONDAY

Array Processing
Practice with Arrays

Sample array problems:
Soda Tally without arrays and with arrays
Others?

Introduce Prime number sieve problem

WEDNESDAY

Parallel Arrays exercises

Exam Scoring problem design activity

Discuss Compare Lists solution.

FRIDAY

Lab Exploration: Arrays with non-integer subscripts - letter count,  table lookup

Design activity with arrays and linear search:

Week 9

MONDAY

Lecture CH 9 - Strings

WEDNESDAY

Lecture CH 12 - File Input
CH 2.x Endfile loops

FRIDAY

Lecture CH 11 - Records, Arrays of Records

Week 10

MONDAY

Lecture CH 8.x - Intro to Multi-Dimensional arrays
Multi-D arrays - example problems

WEDNESDAY

Lecture Ch 13 -Programming in the large

  1. Multiple File Linking
  2. Implementation versus Interface

Examples and demonstration of multi-file programs

FRIDAY

Course wrapup and Review for final exam