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
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)
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
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
- 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