CEN429 Secure Programming · Prerequisites

Prerequisites

CEN429 Secure Programming — 2026-2027 Fall

Asst. Prof. Dr. Uğur CORUH

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

What this course expects from you

  • From the first week you build and run C/C++ programs on your own computer
  • You run your project on Git and GitHub
  • You prove your security controls with unit tests
  • The formal prerequisite of the course is CEN107 Algorithms and Programming I
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Plan of this page

  1. What we bring from Algorithms and Programming I (required)
  2. C programming basics (required)
  3. Background briefly recalled in class
  4. What must be installed on your computer
  5. Check yourself (before the first class)

Rule: the development environment, Git, unit testing and template usage taught in the first weeks of
CEN107 are assumed in this course.

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Before the first class

Do the checks in Section 5 on your own computer.

If you get stuck on a step, go back to the corresponding Algorithms and Programming I page; if you still
cannot solve it, ask in the first class.

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

1. What we bring from Algorithms and Programming I

  • These four topics were taught in CEN107 Algorithms and Programming I (formerly CE103)
  • They are not retaught here; they are used directly, assumed known
  • Optional starting point: CEN107 (CE103) Week 1 — Introduction and developer roadmap
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Development environment

Where is it taught? CEN107 (CE103) Week 2 — Development environments

  • Compiler: GCC / Clang / MSVC
  • IDE, WSL on Windows
  • Building with CMake

Where is it used in this course? Every week's demos; lab setup in Week 1

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Git and GitHub

Where is it taught? CEN107 (CE103) Week 3 — Version management with Git

  • Creating a repository, clone, commit
  • Branches, pull requests
  • .gitignore

Where is it used in this course? Project guide (plan, setup, submission); change management in
Week 1; version identity in Week 12

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Unit testing and coverage tools

Where is it taught? CEN107 (CE103) Week 4 — Unit testing and libraries

  • Writing tests
  • Running them with ctest
  • Coverage reports

Where is it used in this course? S16 test results in the project; sanitizers and fuzzing in Week 4;
test plan in Week 12

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Using project templates

Where is it taught? CEN107 (CE103) Weeks 2–4

  • Creating a private repository from a template ("Use this template", not fork)
  • Building it
  • Producing its tests and documentation

Where is it used in this course? Project guide · 2. Project setup — template:
cpp-cmake-ctest-template

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

2. C programming basics (required)

Almost all demos are written in C, and security bugs mostly come from misusing these basic constructs.
You should be able to read and write the following comfortably:

  • Pointers, arrays and strings (char[], the \0 terminator)
  • Dynamic memory (malloc, calloc, free) and structures (struct)
  • Reading and writing files (fopen, fread, fgets)
  • Compiling a program with several source files and using command-line arguments (argc, argv)

Used heavily in: Week 1 (memory, overflows) and Week 4 (C/C++ hardening)

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

3. Background briefly recalled in class

It is fine if you do not know these yet.

The "Before we start" section of the relevant week gives a short recap; looking at them in advance
makes the class easier.

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Terminal and number systems

  • Terminal: cd, ls, file paths and environment variables in PowerShell and Linux/WSL
    — needed in: Week 1 and all demos
  • Binary and hexadecimal numbers, bytes, XOR
    — needed in: Weeks 3, 9, 11
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Networking and other basics

  • Basic networking: client–server, TCP/IP, HTTP
    — needed in: Weeks 3 and 10
  • Simple SQL (SELECT … WHERE), basic Java or Python syntax
    — needed in: Week 5
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

4. What must be installed on your computer

A laptop is required. Come to the first class with these tools installed:

  • A C/C++ compiler: Visual Studio 2022 (Desktop development with C++) on Windows, GCC or
    Clang on Linux/WSL
  • CMake, Git and a GitHub account
  • WSL2 + Ubuntu if you use Windows
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

What must be installed (continued)

  • OpenSSL 3, SQLite, Python 3, JDK 21

GoogleTest, SoftHSM2 and Tigress are also used during the term; their installation is explained in the
relevant week.

Setup guide for the demo code: code/README.en.md

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

5. Check yourself

Before the first class

Each of the commands below should print a version number (the numbers may differ).

RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Windows (PowerShell)

git --version          # git version 2.x
cmake --version        # cmake version 3.2x or later
wsl --status           # Default Distribution: Ubuntu
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

WSL / Linux

git --version          # git version 2.x
cmake --version        # cmake version 3.2x or later
gcc --version           # gcc (Ubuntu ...) 11 or later
openssl version         # OpenSSL 3.x
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Try the template

Create your own private repository from the project template ("Use this template → Private", not fork), build it and run its tests:

git clone https://github.com/<your-username>/cpp-cmake-ctest-template.git
cd cpp-cmake-ctest-template
cmake -S . -B build
cmake --build build
ctest --test-dir build      # expected: 100% tests passed
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Glossary

Term Meaning
WSL Windows Subsystem for Linux — running Linux inside Windows
CMake Cross-platform build-system generator
CTest The test runner that ships with CMake
Use this template Opening a new repository with the template's files and no history; it can be private
Coverage A measure of how much of the code the tests exercise
RTEU Computer Engineering · 2026-2027 Fall
CEN429 Secure Programming · Prerequisites

Are you ready?

If all of these steps finish without errors, you are ready for the course.

Course site: ucoruh.github.io/cen429-secure-programming

RTEU Computer Engineering · 2026-2027 Fall

Speaker note: This deck is the slide version of the "Prerequisites" page on the course site; a self-check list the student can go through before the first class.

Speaker note: None of the four items in this section are retaught in CEN429; if a student does not remember CEN107, point them back to that week.

Speaker note: A student weak on C basics will struggle badly in Weeks 1 and 4; give this slide extra emphasis.

Speaker note: These three command blocks are the complete self-check list the student should run on their own computer before the first class; demo them live and explain what each line expects.