Programming 2: Introduction to Programming, Linux and C Course Outline

IMPORTANT NOTE: This is a very rough preliminary draft of what we are working on at the moment.  All content here is subject to change as we fnish integrating the printed bok material and course lab exercises into the course design.   We expect for this to be complete by the end of July, 2021.


Course Outline

Introduction to Modern Programming Languages
  • Assembly (machine) vs Higher Level Languages
  • Brief History of Programming Language (evolution)
  • Algorithms and Flowcharts
  • Interpretative vs Compiled Code
  • Expressions, Syntax, Evaluation and Assignment>
  • Self Documenting and Readable Code
  • Why so many programming languages?
Introduction to Linux (basic user commands)
  • Installing the Teachers Network Raspberry Pi Linux
  • What is a user?
  • The Unix File system
  • Permissions
  • Command Line Interface and common commands (pwd, ls, cd, cat, more, date, grep, sort, ps, htop)
  • pipes
  • Input/Output Redirection (<, >)
  • Editors
Characteristics Common to All Programming Languages
  • Variables
  • Types (integers, boolean, float, arrays, string, pointers, etc)
  • Data Structures
  • Expressions and Operators
  • Control Flow
  • Input / Output
  • Functions
  • Programming Style – Readability and Self Documenting Code
Integrated Development Environments (IDE’s)
  • Make
  • Scratch 3 Desktop
  • Arduino
  • MicroPython
  • Eclipse

The C Programming Language

Overview
  • Language Syntax
  • Linux Build Environment (Make)
  • Building our first program and compiling under Linux
Variables and Types
  • Introduction
  • Variables
  • Data Types
  • Identifiers
  • Constants
  • Example Program Analysis
  • Section Programming Project
Basic I/O
  • Introduction to basic console input/output (I/O) functions
  • getc, getchar, putc, putchar
  • scanf
  • printf
  • Example Program Analysis
  • Section Programming Project
Operators and Expressions
  • Expressions and Arithmetic Operators
  • Relational and Logical Operators
  • Bitwise Operators
  • Example Program Analysis
  • Section Programming Project
Control Flow
  • Introduction to Control Flow Statements
  • IF Statement
  • FOR Statement
  • Example Program Analysis #1
  • WHILE Statement
  • DO WHILE Statement
  • Example Program Analysis #2
  • GOTO Statement
  • SWITCH Statement
  • BREAK AND CONTINUE Statements
  • Example Program Analysis #3
  • Section Programming Project
Functions
  • Introduction to Functions
  • Scope
  • Pass by Value / Reference
  • Example Program Analysis
  • Recursion
  • Section Programming Project
Arrays and Structures
  • Introduction
  • Array Declaration and Initialization
  • Example Program Analysis #1
  • Structure Declaration and Initialization
  • Example Program Analysis #2
  • Section Programming Project
Pointers
  • Introduction
  • Pointer Arithmetic
  • Arrays
  • Example Program Analysis #1
  • Function Parameters
  • Memory Allocation / De-allocation
  • Example Program Analysis #2
  • Section Programming Project
String Handling
  • Introduction to String Handling
  • String Constants
  • Array and Dynamically Allocated Representation
  • Standard String Handling Library Functions
  • Example Program Analysis
  • Section Programming Project
File I/O
  • Introduction to Streams
  • Opening and Closing Streams – File Descriptors
  • Reading and Writing from Files
  • Example Program Analysis
  • Section Programming Project
The C Pre-Processor
  • Compiler Overview
  • Breaking large code into smaller easier to maintain blocks (#include)
  • Code readability (#define)
  • Example Program Analysis
  • Section Programming Project
Linked Lists
  • Introduction
  • Single Linked Lists
  • Multiple Linked Lists
  • Circular Lists
  • Section Programming Project
Advanced Topics (Overview)
  • Command Line Arguments
  • Searching and Sorting
  • Queues
  • Stacks
NOTES:
  1. Need to break out course outline into class specific granularity. Standard class time needed.
  2. Do we give quizzes or tests? Are programming assignments graded and if so what are the criteria?
  3. How much time out of class will the teacher have to devote?
  4. LMS Integration?
  5. Blended option? Online only option? Full classroom only?
  6. Flowcharts?
  7. Separate Algorithms and Data Structure course?

Additional Resources

Programming 2: Introduction to Programming, Linux and C Course Description – full course description