silver Macbook turned on Photo by AltumCode on Unsplash

The assignments in this course differ substantially from the assignments you may have worked on in other programming or data science courses. You will not be solving abstract programming and math assignments in isolation. Instead, you will design software that models real-world systems from our networked world and gain an appreciation for the role of algorithms and data structures in problem-solving and software design. One of the fundamental differences in this course, compared to the earlier courses, is that the programming projects consist of many smaller modules. The individual modules must achieve the desired result, but they must also work together to achieve more complex behaviors.

Previous semester projects have touched on these general areas:

  1. Food ordering and delivery apps
  2. Autonomous vehicle decision planning
  3. Superhero battle analysis
  4. Elections and voting
  5. Graphical user interface design

One aspect of this work that students often find tricky is understanding where to start when there are many independent components. Assignment directions will focus on each part independently but will also discuss how they work together. If you aren’t certain where to start, it’s usually best to follow the directions in the order they are presented. You will be taught in early lectures to test each individual module in order to determine if it is doing what is expected. Working in pairs and groups will be required on some assignments to provide you with an opportunity to divide and conquer.

For a current list of assignment deadlines and details, please refer to the course Canvas site.

In this course you will utilize an Integrated Development Environment (IDE) to write code. While many IDEs exist, examples and in-class support resources will utilize PyCharm by JetBrains. It is freely available to students through an academic license and supports all the software development features that we will use in this course.

All assignments will be delivered to students and submitted back to the instructor through Github. If you do not already have an account, you should sign up for one prior to the beginning of class. Early lectures will discuss the possible methods of submitting assignments to help you determine what is most comfortable for you, but the recommended method is to use the built-in Github integration available within IntelliJ IDEA.