IA Algorithms Enrichment 2017

Class information

  • Instructor: Paul Bonnen (pcbonnen@umich.edu)
  • Meeting time: Saturdays 2 - 5PM (Oct 21 - Dec 9)
    • No class: October 28, November 25
  • Meeting location: IA West (Lakeland Virtual Lab)

Class resources

np_complete
Date Topic
Oct 21 Algorithm demo: Greedy algorithms
Introduction to algorithm design
repl.it setup
Introduction to C++: I/O and variables
Nov 4 Algorithm demo: Sorting algorithms
C++: Control statments and loops
Nov 11 Algorithm demo: Searching algorithms
C++: Functions and arrays
Nov 18 Algorithm demo: Fibonacci sequence and dynamic programming
C++: Vectors and abstract data types
Dec 2 Algorithm demo: Introduction to graph theory and Dijkstra's algorithm
C++: Abstract data types, continued
Dec 9 Mini hackathon
Class recap

Project ideas

DEC 9
Having trouble thinking of an idea? Check these out!
 

Further topics and study

DEC 9
Congratulations on completing this enrichment! Here's a collection of resources and topics for you to look into if you are interested in programming.

Abstract data types, part 2: data hiding and classes

DEC 2
In this lesson, we will explore how to use data access control in abstract data types to ensure that our custom data types can maintain valid state at all times.

Abstract data types, part 1: structs

NOV 18
Arguably, C++'s strongest feature is its facilities for object-oriented programming, or the ability to create abstract data types that can handle both data and functionality, and provide a convenient way conceptually break apart our programs and understand them. This lesson will introduce you to structs, which provide a simple mechanism to create abstract data types.

Arrays

NOV 11
As we have seen with the algorithm demos, a number of programming problems deal with having lists of things (typically numbers, but not necessarily). This lesson will teach you how to create an array, or list, of variables.

Functions

NOV 4
Now that you have covered the basics of coding in C++, our first more "advanced" topic is functions. Functions help you to abstract parts of your code so that you can rely on the same piece of code in multiple places in your source.

Scoping and style

ASIDE
Scoping and code style are two important topics to know about moving forward, but we will not be spending too much time on them in class due to time constraints. Please read this article if you finish early on a task or exercise.

Introduction to C++

OCT 21
This activity will walk you through an introductory C++11 program, introducing you to basic input/output, variables, and control structures.

Switch/case is another control structure that will not be taught as a part of this course, but you can (optionally) read about it and try an exercise with switch/case at the link below.

repl.it setup

OCT 21
For this enrichment, you will be using the online service repl.it to do hands-on coding exercises. Please follow these instructions to set up your repl.it account and link it to the Algorithms Enrichment classroom.