Photo of Max Rees

Max Rees (they/them)

Lecturer, Department of Computer Science

Purdue University

Email: first initial + C + last initial AT purdue DOT edu
Office: HAAS G24

Mastodon

Jump to directory index

Jump to current week

Spring 2024 — CS 15900

My lectures: view lecture schedule in the table below

My office hours: check Brightspace announcements for cancellations

Chapter 1 lectures by William Crum:

Week 1
Mon 08 Jan Tue 09 Jan Wed 10 Jan Thu 11 Jan Fri 12 Jan Sat 13 Jan Sun 14 Jan
Lecture 1 (46:57) Lecture 2 (48:29)
No Lecture Quiz Lecture Quiz Demo
Slides No notes Slides p. 31 – 35
Overview of the class; course policies; motivations. Chapter 2. C program structure and syntax; comments; identifiers; data types: integer family (including short, int, long, and long long), character data type (char) and ASCII table.
Complete Lab 0 + take Lab Quiz 0
Week 2
Mon 15 Jan Tue 16 Jan Wed 17 Jan Thu 18 Jan Fri 19 Jan Sat 20 Jan Sun 21 Jan
No classes or office hours
(MLK Jr. Day)
Lecture 3 (47:56) Lecture 4 (47:27)
Lecture Quiz 1 Lecture Quiz 2
Slides p. 35 – 40 Slides p. 40 – 42
Chapter 2 continued. Data types: boolean data type (bool); floating-point data types (float, double, long double); variables: declaration, definition, and initialization; uninitialized variables and undefined behavior; constants: literal constants, symbolic/defined constants, memory constants; formatted input/output: printf format string and data list; format string placeholders: conversion codes and size modifiers. Chapter 2 continued. Placeholders continued: precision, (minimum) width, and flags; variations of the minimum width modifier for printf() placeholders; usage of scanf() for user input.
Start Homework 1
Start Lab 1 (overview) + take Lab Quiz 1
Week 3
Mon 22 Jan Tue 23 Jan Wed 24 Jan Thu 25 Jan Fri 26 Jan Sat 27 Jan Sun 28 Jan
Lecture 5 (50:38) Lecture 6 (48:19)
Lecture Quiz 3 Lecture Quiz 4
Slides p. 42 – 46 Slides p. 46 – 49
Chapter 2 continued. Types of errors: compile-time errors (including syntax errors and the difference between gcc's "errors" and "warnings"), and run-time errors (including crashes such as segmentation faults and floating point exceptions, and logical errors); debugging with diagnostic printf() statements.

Chapter 3. Expressions; operators; operands; operator precedence; simple and compound assignments.

Take the Lecture Quiz 3 makeup on Brightspace if you missed the lecture or are unsure of your attendance status.

See this Ed post for the unanswered Zoom questions.
Chapter 3 continued. Prefix and postfix increment and decrement; side effects and sequence points; undefined behavior; single data type and mixed data type expressions; implicit data type conversions (safe) and hierarchy of data types by relative size; explicit data type conversions (can be unsafe) using "type casting" operators; rounding versus truncation with regards to floor(), (int) casts, and printf() precision modifiers.

Discuss on Ed
Homework 1 due 11:00 PM Start Homework 2
Lab 1 due 30 minutes before lab period
Start Lab 2 (overview) + take Lab Quiz 2
Week 4
Mon 29 Jan Tue 30 Jan Wed 31 Jan Thu 01 Feb Fri 02 Feb Sat 03 Feb Sun 04 Feb
Lecture 7 (48:22) Lecture 8 (49:23)
Lecture Quiz 5 Lecture Quiz 6
Slides p. 50 – 52 Slides p. 53 – 56
Chapter 3 continued. Assignment data type conversions (can be unsafe); immutability of object data types; what causes the value of a variable to change (simple or compound assignment operators, scanf(), or prefix/postfix increment/decrement operators); selection by calculation with examples, including the "scaling to zero or one" formula.

Discuss on Ed
Chapter 4. Purpose of functions; function factoring; functional cohesion; calling function and called function; parameters; return values; function declarations, calls, and definitions; void functions; functions with no parameters and no return value (static output).

Discuss on Ed
Lab 2 due 30 minutes before lab period
Start Lab 3 (overview) + take Lab Quiz 3
Week 5
Mon 05 Feb Tue 06 Feb Wed 07 Feb Thu 08 Feb Fri 09 Feb Sat 10 Feb Sun 11 Feb
Lecture 9 (47:43) Lecture 10 (45:59)
Lecture Quiz 7 Lecture Quiz 8
Slides p. 57 – 64 Slides p. 64 – 68
Chapter 4 continued. Functions with no parameters that return a value (input); functions with parameters that return a value (calculation); functions with parameters and no return value (dynamic output); differences between function declarations, calls, and definitions; acceptable main() functions.

Discuss on Ed
Chapter 4 continued. Parameter passing: pass-by-value and pass-by-address; address operator & and dereferencing operator *; pointers and pointer types; swapping the value of two variables; scope (local and global, for variables and functions respectively).

Discuss on Ed
Homework 2 due 11:00 PM Start Homework 3
Lab 3 due 30 minutes before lab period
Start Lab 4 (overview) + take Lab Quiz 4
Week 6
Mon 12 Feb Tue 13 Feb Wed 14 Feb Thu 15 Feb Fri 16 Feb Sat 17 Feb Sun 18 Feb
Lecture 11 (46:29) Lecture 12 (46:21)
Lecture Quiz 9 Lecture Quiz 10
Slides p. 68 – 72 Slides p. 72 – 76
Chapter 4 continued. Structure charts: format, rules, good and bad examples; recommended problem-solving method (specify, analyze, design, code, test and debug, refine); overview of the current position in the class's content: just finished sequence with chapter 4; next is selection in chapter 5; then repetition in chapter 6.

Discuss on Ed
Chapter 5. Logical data (true or false); logical expressions; C convention for true and false values ("truthiness"); logical operators: NOT (!), AND (&&), OR (||); truth tables; short-circuiting; simple examples of logical NOT, AND, and OR; examples of short-circuiting with side effects; relational operators (< <= > >=) and equality operators (== !=); compound statements.

Discuss on Ed
Lab 4 due 30 minutes before lab period
Start Lab 5 (overview) + take Lab Quiz 5
Week 7
Mon 19 Feb Tue 20 Feb Wed 21 Feb Thu 22 Feb Fri 23 Feb Sat 24 Feb Sun 25 Feb
Lecture 13 (48:27) Lecture 14 (48:55)
Lecture Quiz 11 Lecture Quiz 12
Slides p. 76 – 78, 80 – 82 Slides p. 82 – 87
Chapter 5 continued. Logical complements and examples thereof; two-way selection using the if/else construct; nested selection with if/else.

Discuss on Ed
Chapter 5 continued. "Dangling else" logical error; two-way selection using the conditional expression (also known as the ternary conditional operator); multi-way selection using if/else if/else.

Discuss on Ed
Homework 3 due 11:00 PM Start Homework 4
Lab 5 due 30 minutes before lab period
Start Lab 6 (overview) + take Lab Quiz 6
Midterm 1: 08:00 – 09:00 PM, Hall of Music
Week 8
Mon 26 Feb Tue 27 Feb Wed 28 Feb Thu 29 Feb Fri 01 Mar Sat 02 Mar Sun 03 Mar
Lecture 15 (48:41) Lecture 16 (49:17)
Lecture Quiz 13 Lecture Quiz 14
Slides p. 88 – 91 Slides p. 92, 95 – 96, 98, 97
Chapter 5 continued. switch construct: case labels and break statements; "fall-through" behavior of switch; comparing floating-point values for equality; C language rules for switch; when and how to use switch.

Discuss on Ed
SI leader application
Chapter 6. Repetition using loops: loop control expression (LCE), loop control variable (LCV), loop initialization and loop update, loop iterations; pre-test versus post-test looping constructs: the minimum number of iterations and when to use each; tabular strategy for analyzing looping code; while and do-while loops; event-controlled versus counter-controlled processes; input validation as a event-controlled process using a post-test looping construct.

Discuss on Ed
Lab 6 due 30 minutes before lab period
Start Lab 7 (overview) + take Lab Quiz 7
Week 9
Mon 04 Mar Tue 05 Mar Wed 06 Mar Thu 07 Mar Fri 08 Mar Sat 09 Mar Sun 10 Mar
Lecture 17 (49:12)
Lecture Quiz 15 No lecture Last day for office hours
Slides p. 99 – 103
Chapter 6 continued. Implementation of the factorial example; nested looping; infinite loops and forcing programs to exit using Ctrl-C.

Discuss on Ed
Homework 4 due 11:00 PM Start Homework 5
Lab 7 due 30 minutes before lab period
Start Lab 8 (overview) + take Lab Quiz 8
Spring break
Mon 11 Mar Tue 12 Mar Wed 13 Mar Thu 14 Mar Fri 15 Mar Sat 16 Mar Sun 17 Mar
No classes or office hours
Week 10

Additional Ch. 6 examples

Notes p. 93 – 94: minimum, maximum, and average for an arbitrary number of exam scores.

Only a single loop is necessary: the input loop, which updates the current minimum, maximum, sum, and count of scores. When the user enters -1 as a score (a sentinel), the loop ends - the sum is divided by the count to get the average, and that is displayed along with the final minimum and maximum.

Notes p. 107 – 112: sorting digits in a number from largest to smallest, creating as a result the largest possible number from those digits.

Repetitive processes:

  • Input validation in getInput
  • Counting zeroes in the original number n in ctZero
  • Looping while the original number n is greater than zero in the main function
    • Finding the largest digit in the original number n in findMax (this is a nested repetitive process!)
Mon 18 Mar Tue 19 Mar Wed 20 Mar Thu 21 Mar Fri 22 Mar Sat 23 Mar Sun 24 Mar
Lecture 18 (48:31) Lecture 19 (48:29)
Office hours resume Lecture Quiz 16 Lecture Quiz 17
Slides p. 103 – 106 Slides p. 116 – 120
Chapter 6 continued. Infinite loop examples; introduction to the C for loop and when to use it; examples of rewriting while loops into for loops.

Discuss on Ed
Chapter 8. Introduction to arrays: motivation, concept, declaration and definition, initialization and assignment; iterating over arrays with loops.

Discuss on Ed
Lab 8 due 30 minutes before lab period
Start Lab 9 (overview) + take Lab Quiz 9
Week 11
Mon 25 Mar Tue 26 Mar Wed 27 Mar Thu 28 Mar Fri 29 Mar Sat 30 Mar Sun 31 Mar
Lecture 20 (51:27)
Lecture Quiz 18 No lecture
Slides p. 121 – 127
Chapter 8 continued. Going beyond the limits of an array; arrays across function boundaries: syntax and semantics of passing individual array elements by value and by address, and of passing entire arrays by address; handling of the array name as an address and the index as an offset with respect to that address (hence zero-based indexing); summary of passing various objects (variables, array elements, and arrays) by value, by address, and using the return keyword; printing or scanning entire arrays.

Discuss on Ed
Homework 5 due 11:00 PM Start Homework 6
Lab 9 due 30 minutes before lab period
Start Lab 10 (overview) + take Lab Quiz 10
Week 12
Mon 01 Apr Tue 02 Apr Wed 03 Apr Thu 04 Apr Fri 05 Apr Sat 06 Apr Sun 07 Apr
Lecture 21 Lecture 22
Lecture Quiz 19 Lecture Quiz 20
p. 147
Chapters 9 & 10. Chapters 9 & 10 continued.
Midterm 2: 08:00 – 09:30 PM, Hall of Music Lab 10 due 30 minutes before lab period
Start Lab 11 + take Lab Quiz 11
Week 13
Mon 08 Apr Tue 09 Apr Wed 10 Apr Thu 11 Apr Fri 12 Apr Sat 13 Apr Sun 14 Apr
Lecture 23 Lecture 24
Lecture Quiz 21 Lecture Quiz 22
 
Chapter 8 continued. Chapter 8 continued.
Homework 6 due 11:00 PM Start Homework 7
Lab 11 due 30 minutes before lab period
Start Lab 12 + take Lab Quiz 12
Week 14
Mon 15 Apr Tue 16 Apr Wed 17 Apr Thu 18 Apr Fri 19 Apr Sat 20 Apr Sun 21 Apr
Lecture 25 Lecture 26
Lecture Quiz 23 Lecture Quiz 24
 
Chapter 8 continued. Chapter 8 continued.
Homework 7 due 11:00 PM
Lab 12 due 30 minutes before lab period
Attend Lab 13
Lab Quiz 13 due 11:00 PM
Quiet period (week 15)
Mon 22 Apr Tue 23 Apr Wed 24 Apr Thu 25 Apr Fri 26 Apr Sat 27 Apr Sun 28 Apr
Lecture 27 Lecture 28
Lecture Quiz 25 Lecture Quiz 26
 
Chapter 8 continued. Chapter 6 continued.
No labs
TA office hours end
Finals week (16)
Mon 29 Apr Tue 30 Apr Wed 01 May Thu 02 May Fri 03 May Sat 04 May Sun 05 May
No classes or TA office hours
Final Exam: 03:30 – 5:30 PM, Hall of Music

Last modified on Tue 26 Mar 2024 02:10 PM EDT.

Directory index

[ICO]NameLast modifiedDescription

[   ]Parent Directory  
[TXT]202210CS15900.html2021-12-16 22:26 Fall 2021 - CS 15900
[TXT]202220CS15900.html2022-05-07 11:57 Spring 2022 - CS 15900
[TXT]202310CS15900.html2022-12-16 18:08 Fall 2022 - CS 15900
[TXT]202320CS15900.html2023-05-09 09:06 Spring 2023 - CS 15900
[TXT]202410CS15900.html2023-12-14 09:49 Fall 2023 - CS 15900
[TXT]c.shtml2024-02-25 14:23 Interesting articles on the C programming language
[TXT]counters.shtml2024-01-15 14:19 Countdowns
[TXT]links.shtml2024-01-19 09:49 Useful Purdue links