ECE 177 --- Introduction to Programming for Engineers
Assignments

Homework Assignments:

Homework handed in are due at the beginning of the class period. Substantial points will be taken off if late.
CodeLab is here for homework that requires it. CodeLab is due at 11:59pm on the given day. Half credit is given for problems completed late.

# Due Assignment
C1) Fri. Jan 21: Sign up for Codelab. Instructions here. When asked, your section access code is MAIN-30053-TBSR-51
C2) Thu. Jan 27: Work CodeLab problems up to and including those in the section titled Arithmetic Operators in Chapter 2. Due 11:59pm
H1) Wed. Feb 2: Homework 1. Same assignment in Word format if you want to fill it out it on the computer.
H2) Mon. Feb 7: Homework 2. (See "bonus" notes)
Also, watch the Feb. 4 lecture on Brightspace
H3) Fri. Feb 11: Homework 3
C3) Sun. Feb 13 (11:59pm): CodeLab problems through the end of the first section of Chapter 4 on Logical Expressions. (This includes the rest of Chapter 2 and all of Chapter 3.)
C4) Tues. Feb 15 (11:59pm): Work all CodeLab problems corresponding to Homework 4
C5) Thu. Feb 17 (11:59pm): Work all CodeLab problems through the section of Chapter 4 on Selection
C6) Tue. Feb 22 (11:59pm): Work all CodeLab problems through the end of Chapter 4
C7) Thur. Mar 3 (11:59pm): Work all CodeLab problems through the end of Chapter 5
C8) Thur. Mar. 10 (11:59pm): Work all CodeLab problems titled Homework 5
C9) Lab 7 Prelab: Work all CodeLab problems related to Lab 7 before coming to lab (week of March 21).
C10) Due last class: Work all CodeLab problems titled Homework 6
C11) Sun. Mar 27 (11:59pm): Work all CodeLab problems through the end of Chapter 7
C12) Lab 8 Prelab: Work all CodeLab problems related to Lab 8 before coming to lab (week of March 28).
C13) Sun. April 3 (11:59pm): Work all CodeLab problems titled Chapter 9 and PREPROCESSOR
C14) Lab 9 Prelab: Work all CodeLab problems related to Lab 9 before coming to lab (week of April 4).
C15) Sun. April 10 (11:59pm): Work all CodeLab problems in Chapter 10 (Pointers and Dynamic Storage).
C16) Lab 10 Prelab: Work all CodeLab problems related to Lab 10 before coming to lab (week of April 11).
C17) Sun April 17 (11:59pm): Work all CodeLab problems in Chapter 11.
C18) Lab 11 Prelab: Work all CodeLab problems related to Lab 11 before coming to lab (week of April 18).
C19) Sun April 24 (11:59pm): Work all CodeLab problems titled Homework 7.

Optional Text Reading Assignments:

By Fri., Jan. 21: Read through the end of Chapter 1.
By Wed., Jan. 26: Read through the end of Section 2.3
By Mon., Jan. 31: Read through the end of Chapter 2.
By Fri., Feb. 4: Read through the end of Section 3.1
By Fri., Feb. 11: Read through the end of Section 4.2
By Mon., Feb. 21: Read through the end of Chapter 4.
By Mon., Feb. 28: Read through the end of Chapter 5.
By Fri., Mar. 4: Read through the end of Chapter 6.
By Fri., Mar. 11: Read through the end of Chapter 7.
By Mon., Mar. 23: Read through the end of Chapter 8.
By Wed., Mar. 30: Read through the end of Chapter 9.
By Fri., Apr. 8: Read through the end of Chapter 10.
By Wed., Apr. 13: Read through the end of Chapter 11.

Labs:

Lab 1: Week of January 24 - Lab 1 assignment is here. No pre-lab this time.
Lab 2: Week of January 31 - Write and run programs for problems in the optional text: Chapter 2 problems 1, 3 and 7, and Chapter 1 problem 3.
   Here is some useful information to do the lab.

Lab 3: Week of February 7 - Lab 3 assignment is here. and Put your answers on this answer sheet No pre-lab this time.
Lab 4: Week of February 14 - Lab 4 assignment is here. and Lab 4 C code to debug is here. No pre-lab this time.
   Here is a guide for compiling and debugging with gdb

Lab 5: Week of February 21 - Lab 5 assignment is here. For pre-lab, do what you can.
Lab 6: Week of February 28 - Lab 6 assignment is here. For pre-lab, write the code the best you can.
Lab 7a: Week of March 7 - Lab 7a assignment is here.
 Board layout is here. the wiring list is here. and a photo of the board is here.
 Hex code for testing is here.
 Zip file with code is here.

Lab 7b: Week of March 21 - Lab 7b assignment is here. and starter code is here.
 Note: For pre-lab work the CodeLab problems associated with this lab before coming to lab.
 To use the LCD you will need lcd.h and lcd.c (same as with lab 7a)

Lab 8: Week of March 28 - Lab 8 assignment is here. and starter code is here.
 Note: For pre-lab work the CodeLab problems associated with this lab before coming to lab.
Lab 9: Week of April 4 - Lab 9 assignment is here. and starter code is here.
 Note: For pre-lab work the CodeLab problems associated with this lab before coming to lab.
 Here are some test sequences:

Lab 10: Week of April 11 - Lab 10 assignment is here. and starter code is here.
 Note: For pre-lab work the CodeLab problems associated with this lab before coming to lab. Read "Pre-lab" section on lab sheet first.

Lab 11: Week of April 18 - Lab 11 assignment is here. and starter code is here.
 Note: For pre-lab work the CodeLab problems associated with this lab before coming to lab.

Notes and examples from class:

Wednesday, January 19: Links to puzzle
Friday, January 21: Simple C program and annotated version
Wednesday, January 26: Notes on data types
Friday, January 28 to February 2: Notes on binary
Wednesday, February 2: Notes on operators
Friday, February 4: Notes on operators continued from the "homework lecture"
Saturday, February 5: Elaboration on binary addition and subtraction
Monday, February 7 and February 9: Operator precedence
Friday, February 11: Notes on Input/Output
Friday, February 11 and Monday, Feb. 14: Notes on control structures
Monday, February 14: and Feb. 16: Control structures code
Wednesday, February 16: Push button connection
Sunday, February 27: Notes from bonus lecture
Monday, February 28: Simple algorithms
Wednesday, March 2: More on repetition/bit masking
Wednesday, March 2 and Friday, March 4: Notes on functions
Friday, March 4: Notes on memory and the stack
Monday, March 9: Notes on memory and compiling
Monday, March 7 to 11: Notes on storage classes, #define, enum
Monday, March 21, 23 and 25: Notes on arrays, the keypad and lab
Monday, March 28: Array notes and code examples and code examples as functions
Wednesday, March 30: Notes from video lectures: here, here and here
Monday, April 4 and 8: Notes on pointers
Friday, April 8: Examples of arrays, pointers and functions
Monday, April 13 etc. Notes on stucts
Monday, April 25: Notes on HW6

Other exercises/examples:



Quick Guides and hardware info:

Reference manual for the STM NUCLEO-F401RE board

Quick start guide for setting up a console application in Visual Studio (for PCs)

Quick start guide for setting up PuTTY, running ssh, and doing a gcc compile (PC)

One page quick reference on the linux command line

Data sheet for the AVR can be found here.

Data sheet for the LCD display can be found here.

Highlight of some gdb (gcc command line) debugger commands is here.

Windows Programming files here (avr.zip)
 Info on compiling and programming is here for Windows users and here for Mac users

Notes:

Precedence Chart