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 finish integrating the printed book material and course lab exercises into the course design.


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