LMU ☀️ CMSI 662
SECURE SOFTWARE DEVELOPMENT
HOMEWORK #3 Due: 2026-03-24

Learning Objectives

In this assignment you will demonstrate:

Read and Watch

Read:

Familiarize yourself with (via skimming):

Watch:

Although you should do all the readings and watch all the videos assigned above, I am not going to assign you problems where you echo back all you’ve read or watched, nor will ask you to write small snippets of code illustrating each of the vulnerabilities discussed in the resources. You will see those concepts in the practice problems, classwork, and on exams. For this assignment, you will focus on writing C and C++ modules that you can demonstrate are free from those vulnerabilities. That said, please take these learning opportunities seriously and do try to devour all of the materials that I have curated for you.

Activity

Complete a few more (at least three) challenges at PicoCTF. Strive to choose challenges related to the topics for this unit (C, C++, buffers, etc.)

Submission Instructions

Submit via BrightSpace, a text or pdf document with:

Exercises

  1. Give the titles and URLs of three videos from Low Level Learning that deal with specific vulnerabilities that you watched to completion, together with a sentence or two on the purpose or lesson if each video. Ones with the blatant clickbait titles like “HACKED!” or “HOLY SH*T!” are surprisingly okay.
  2. Write a module defining a secure, expandable array-based stack of strings in C. (We will do a non-expandable version in class.) Fail fast by returning a “response object” that the caller can use to determine whether the operation succeeded (and if appropriate, its return value), or if it did not, what happened. As usual, you will be graded on things like validation and defensive copies.
  3. Write a class for a secure expandable array-based stack of strings in C++, using a raw array of smart pointers for the stack. In practice, C++ programmers have a standard stack class, but in this course we are interested in building secure structures from first principles and getting practice with all the various features (and warts) of C++. Fail fast by throwing exceptions.
  4. Write a class for a secure expandable array-based stack of strings in Java. Fail fast by throwing exceptions.

Grading