UP | HOME

Introduction
COP-3223H

Table of Contents

About me

  • Paul Gazzillo
  • Associate professor
  • Research areas
    • Software engineering
    • Programming languages
    • Security
  • https://paulgazzillo.com

About you

Introductions

Why learn C?

"Feel the bits"

  • "High-level assembly"
    • Mental model closer to the hardware
    • Understand performance implications of your code

Systems programming

Interface directly with *nix operating systems in their own language

Very widespread

The Top Programming Languages 2025 - IEEE Spectrum

ieee_specture_2025.png

See trending and jobs too in IEEE spectrum.

Language Creation Important Version(s)
Python 1991 2000 v2
Java 1995 1996 v1
C++ 1985 1989 v2
SQL 1973  
C# 2000  
JavaScript 1995  
TypeScript 2012  
C 1972 1978 K&R C
Shell (Bourne) 1979  
Go 2009  
R 1993  
Rust 2006 2015 v1
Swift 2014  

Source: Wikipedia (2026-01-09)

TimelineOfProgrammingLanguages.webp

Source: https://javaconceptoftheday.com/history-of-programming-languages/

Use C professionally?

Probably not!

Embedded or systems programmer?

Very likely to use C.

Software engineer?

Likely to use C's descendants (broadly): C++, Java, Rust, Go, C#, Swift

Python, JavaScript, etc?

  • C is like Latin (albeit still widely used!)
  • Will understand how these languages are implemented
  • Will better understand programming and your machine

Easier to learn other languages

  • Low-level languages: like C, closer to machine language
  • High-level languages: non-hardware features

Easier to go from low-level to high-level languages

  • High to low: learning is slow
  • Low to high: easy as pie
  • Lots of languages built off of it, inspired by it
  • Lots of languages inspired by its syntax
  • Lots of languages/systems implemented in it (and variants)
    • python, linux, apache web server, bash, git
  • You can see how high level languages work in terms of C
    • Objects are like structs with function pointers

Course overview

Learn by building games

  • Simple text-based games
  • Limited animation

robots.png

Course phases

Mental Model
Tools
Basic C Constructs
Full Game
Higher-Level C Constructs
  • Mental model (1wk)
    • Computer as program listing and memory
  • Tools (1wk)
    • Command-line C programming and development setup
  • Basic constructs implementing simple games (8wk)
    • Core C constructs for writing a complete program
  • Full game with basic constructs (1wk)
    • Students propose and construct their own games/apps in C and shell
  • Higher-level constructs (4wk)
    • Advanced features and those that that ease development, make programming more concise

Syllabus overview

Syllabus

  • Assignments
    • Many, small, quick homeworks
    • Tool exercises
    • Small programming projects
    • Large, 5-week project writing a text-based game (or application)
    • Exams
    • Attendance
  • Points
    • Programming is, in part, a skill. Lots of practice will help
    • Some homeworks will be just hand-copying C code, and identifying/fixing mistakes in them
    • Programming is simple, but not easy

Author: Paul Gazzillo

Created: 2026-01-10 Sat 07:30

Validate