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.

You will work on projects in each of these general areas:

  1. Food ordering and delivery
  2. Autonomous vehicle decision planning
  3. Superhero battle analysis
  4. Elections
  5. Graphical user interface for data science

Each project consists of smaller module deliverables. 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 IntelliJ IDEA 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. Students who have used PyCharm, also by JetBrains, will find this IDE quite familiar.

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.