The course assignments, project, lecture notes, and other materials will be posted on GitHub using a workflow adapted from GitHub Classroom. Please keep materials distributed via private repositories private. The instructor and teaching assistants will have access to your private git repositories for each assignment in order to better assist you during the course. Developing or releasing assignment solutions in the public impedes the learning of current and future students.

GitHub Organization:


Canvas will be used to assign due dates for assignments and collect assignment report submissions. Assignment reports should have a reference to the GitHub commit containing the relevant source code submission. Canvas will also be used to distribute any necessary course announcements.



Atlas is a program analysis framework that will be used heavily during the course. Atlas is developed by a local Ames, Iowa company called EnSoft Corporation. For support with general Atlas troubleshooting issues email

The Atlas program analysis framework was chosen because:

  • The instructor and TAs have familiarity with the framework
  • The framework is actively maintained and supported by a commercial business
  • The framework is highly extensible
  • The framework is completely free for students (request a license with your .edu email at
  • The framework APIs are written in Java (a familiar programming language in software engineering curriculum)
  • The framework can be used to create auto graders in the form of unit tests that fairly and efficiently grade student solutions
  • The instructor believes Atlas is objectively one of the best program analysis frameworks for teaching program analysis concepts

Download Atlas:


A course Piazza discussion board has been setup to allow you to seek help from your peers, teaching assistants, and the instructor. You may discuss approaches to an assignment and provide technical help to peers, but do not directly provide solutions. The chat may also be used to provide class specific feedback to the instructor and teaching assistants.

Piazza Course:

Stack Overflow

For Atlas framework programming questions that have not already been answered by the community you can post a well researched question on Stack Overflow (see When you post the question tag it with the tag “atlas-pa” so that users following the tag are alerted to your question. This will not only help you but it will also help your peers having similar problems as well as reduce the overhead of the instructor and teaching assistants having to answer duplicate questions. You can follow recently tagged questions by updating your account preferences at: Finally, don’t be afraid to post a link to your question in the Piazza discussion board to get the attention of other students, the teaching assistants, and the instructor.

Remember: Do not ask homework or course specific questions on Stack Overflow! Course specific questions are better asked during class or in the Piazza discussion board.


Of course you can always ask peers, a teaching assistant, or the instructor for help but don’t make us send you a link. Make sure to google around first and be sure that your question has been well researched before asking for additional help.