CSC 6580 Fall 2023

This page contains information specifically about the Fall 2023 class. General information about the class can be found at CSC 6580 Automated Reverse Engineering.

Schedule

This class meets at 10:00 AM until 10:50 AM, central time, every Monday, Wednesday, and Friday. The course meets in Bruner 409 [maps]. Slides will be available shortly before class starts, via iLearn.

It is my intention to also offer the class via Zoom and will provide details at the first class. Finally, I will attempt to record the class and make the recording available online. I urge you not to depend on that. Many times I have to re-record the class and recordings can take time to appear.

N.B. There will be times when I have to cancel class (or switch to Zoom only) with little notice because of work at Oak Ridge National Laboratory. This happens at least once (and usually more than once) per semester. I will give as much notice as I can.

Grading

The course consists of two exams, a midterm and a final. These account for 40% of the grade. There is also homework, which accounts for the remaining 60%.

Homework60%
Midterm Exam20%
Final Exam20%
Total100%
Grading

Exams consist of a number of questions focused on an understanding of the theory and principles discussed. Exams consist of N questions, and the grade is based on the best M answers (M<N), with questions having weight 100/M and all parts of multipart questions having equal weight. The maximum grade, except in very special cases, is 100, regardless of how many questions are answered. Exams are take-home and open notes (but no collaboration). The material is cumulative, so the exams are, too.

The homework is focused on the application of the material discussed. Homework assignments are graded one point for the correctness of the solution and one point for being submitted on time, for a maximum of two points per assignment. Any assignment can be submitted late but loses half the potential points. You can submit the assignment until the solution is given, for obvious reasons. The lowest two homework grades will be dropped, and the homework grade computed from those that remain. I expect there to be approximately 11 homework assignments over the course of the class; one per week, due a week after being assigned. Homework is cumulative. Assignments build on each other.

N.B. Please follow the instructions. This seems to be surprisingly hard. The goal is to use an automated grading script, and this will not work if you don’t follow the instructions.

Considerations

I want you to learn. Tennessee Tech wants you to learn. Hopefully, you want to learn, too.

If you have a documented disability that may impact your learning and/or participation in this course, please talk with me so that we can develop a plan to effectively support your learning and participation.

If you have an undocumented disability you’d like me to know about, or are opting not to register your disability with the university, or just want to talk about learning to learn, you are invited also to set up a conversation so we can plan ways you might collaborate with me, peers, others on campus, and family members to maximize your learning.

Trust the value of your intellect and ask for help when you need it. I expect you to act with integrity. This means the following.

  • Take responsibility and credit for your own work and ideas
  • Give credit for the work or ideas of others
  • Share credit for collaborative work
  • Treat others ethically and give them the same considerations you would want
  • Deal honestly with others

You are surrounded by people who have been through this before you, and by people who want to help you. Ask for help before doing something you might regret.

Expectations

  • Come to class
  • Read the reading material
  • Do the homework
  • Email me with questions (sprowell@tntech.edu)
  • Text me when I don’t respond (1-724-307-8229)

I expect you to run experiments, try things, test things out, and play with the tools. Note that if you can get the answer to a homework or exam question by running a tool, you should do that.

Prerequisites

You should know the following.

  • A reasonable amount of C and some C++. Understand pointers including function pointers and understand the stack versus the heap.
  • Understand how to use Linux. Know how to find files, how to edit text files, and how to compile and run programs.
  • Understand basic discrete math, including sets, functions, relations, predicates, the usual logical connectives, and quantifiers.
  • Understand basic computing theory, including finite automata, Turing machines, and the Halting Problem.
  • Binary, decimal, and hexadecimal number systems, conversion, and the idea of “high order” and “low order” bits and bytes.
  • If you know some assembly, that’s excellent, but not assumed. We will spend time learning it together.
  • If you know Python, that is excellent. Python is (relatively) easy to learn.
  • This is a 6000-level computer science course. I expect you to know how to read and write programs, generally.

Course Goals

Course Goal: Understand basic techniques for writing programs that analyze binary (compiled) programs.

You should learn the following.

  • Understand assembly language and executable files
  • How the operating system loads and executes files
  • How to use command line utilities to get information about binary files
  • How to figure out the true control flow of a program
  • How to identify pointers (the “points to” problem)
  • How to guess data types (the “memory shape” problem)
  • How to instrument programs
  • How to perform taint analysis of programs
  • How to perform symbolic execution of programs

How to automate the above.

Course Calendar

This is based on the current 2023 Fall academic calendar found here. The final exam is due at the end of the regular final exam time, which at the time of writing is not yet posted. When it is posted, you can find it here.

MondayWednesdayFriday
18 August
First Day
21
2325
28
301 September
4
Labor Day Holiday
68
11
1315
18
2022
25
2729
2 October46
Midterm Assigned
9
Fall Break Holiday
11
Fall Break Holiday
13
Midterm Due
16
1820
23
2527
30
1 November3
6810
Holiday
13
1517
2022
Thanksgiving Holiday
24
Thanksgiving Holiday
27291 December
Final Assigned
CSC 6580 Fall 2023 Calendar