# Courses

## 2017

- Coursera

### What is news?

- Earning and keeping trust
- The Power of Credibility
- The importance of accuracy
- Finding balance in a world that tilts
- Global journalistic ethics
- Transparency and dealing with mistakes
- Is seeing believing?
- National Press Photographers Association guidelines
- Sensationalism in journalism
- What is propaganda?
- Readings in plagiarism

- Connecting with audiences and communities
- News Elements & Values
- First things first: your lead
- Point-of-view journalism
- Frameworks for POV journalism

- Forms of journalism and their purposes
- Local news
- Features
- Sports
- National and international news
- Science and environmental news
- Opinion writing
- Advice from a journalism recruiter

- Journalism happens in interesting ways
- A 2-minute history of journalism
- Engaging online audiences
- How social media makes issues go viral
- Crowdsourcing in journalism
- Social Media Tools for Journalists
- Doing social media journalism

### America Through Foreign Eyes

- America through African Eyes
- America through Chinese Eyes
- America through French Eyes
- America through Mexican Eyes
- Reversing the Gaze

## 2016

- Coursera

### Securing Digital Democracy

- Voting as a Security Problem
- The Security Mindset
- Security Requirements for Voting
- The Living Voice
- Early Paper Ballots
- The Australian Ballot
- Mechanical Voting Machines
- Punched Card Voting

- Computers at the Polls
- Optical Scan Voting
- DRE Voting Machines
- Inside the Black Box
- Paper as a Defense
- Diebold
- More Goes Wrong

- Security Procedures and Voting Around the World
- Voter Registration
- Voter Authentication
- Guarding Against Tampering
- Field Testing
- Case Studies
- India’s EVMs

- Human Factors and Internet Voting
- Usability
- Usable Paper Ballots
- Accessibility
- Absentee Voting
- Client-side Threats
- Server-side Threats

- New Technology and Policy
- Post-Election Auditing
- End-to-End Verifiable Voting
- Verifying an E2E Result
- Election Policy in the U.S.
- Testing and Certification
- Recommendations

### Serious Gaming

- What are serious games?
- Why do we play games?
- Relationship between play and culture
- Psychological function of play
- Motivations for playing and gaming

- Serious games and simulations
- The ABCDEsim
- Simulation at VSTEP
- Professional simulators versus simulation games
- Classifications

- Persuasive gaming
- Impact of serious games
- Determining impact
- Survey method
- Experimental method

- Future of serious games

### Academic Information Seeking

- Search strategy & logging
- Mendeley usage
- Respecting copyright

### Fundamentals of Digital Image and Video Processing

- Computer Science
- Mathematics
- Matlab

- Introduction to Image and Video Processing
- Analog v.s. Digital Systems
- Image and Video Signals
- Electromagnetic Spectrum

- Signals and Systems
- 2D and 3D Discrete Signals
- Complex Exponential Signals
- Linear Shift-Invariant Systems
- 2D Convolution
- Filtering in the Spatial Domain

- Fourier Transform and Sampling
- 2D Fourier Transform
- Sampling
- Discrete Fourier Transform
- Filtering in the Frequency Domain
- Change of Sampling Rate

- Motion Estimation
- Applications of Motion Estimation
- Phase Correlation
- Block Matching
- Spatio-Temporal Gradient Methods
- Fundamentals of Color Image Processing

- Image Enhancement
- Point-wise Intensity Transformations
- Histogram Processing
- Linear Noise Smoothing
- Non-linear Noise Smoothing
- Sharpening
- Homomorphic Filtering
- Pseudo Coloring
- Video Enhancement

- Image Recovery
- Image Restoration
- Matrix-Vector Notation for Images
- Inverse Filtering
- Constrained Least Squares
- Set-Theoretic Restoration Approaches
- Iterative Restoration Algorithms
- Iterative Least-Squares and Constrained Least-Squares
- Spatially Adaptive Algorithms
- Wiener Restoration Filter
- Wiener v.s. Constrained Least-Squares Restoration Filter
- Wiener Noise Smoothing Filter
- Bayesian Restoration Algorithms
- Maximum Likelihood and Maximum A Posteriori Estimation
- Other Restoration Applications

- Lossless Compression
- Elements of Information Theory
- Run-Length Coding and Fax
- Huffman Coding
- Arithmetic Coding
- Dictionary Techniques
- Predictive Coding

- Image Compression
- Scalar Quantization
- Vector Quantization
- Differential Pulse-Code Modulation
- Fractal Image Compression
- Transform Coding
- JPEG
- Subband Image Compression

- Video Compression
- Motion-Compensated Hybrid Video Encoding
- On Video Compression Standards
- H.261, H.263, MPEG-1 and MPEG-2
- MPEG-4
- H.264
- H.265

- Image and Video Segmentation
- Methods Based on Intensity Discontinuity
- Methods Based on Intensity Similarity
- Watersheds and K-Means Algorithms
- Advanced Methods

- Sparsity
- Sparsity-Promoting Norms
- Matching Pursuit
- Smooth Reformulations
- Applications

## 2015

- Coursera
- EdX
- Stanford
- Udacity

### Quantitative Formal Modeling and Worst-Case Performance Analysis

- Computer Science
- Mathematics

- Modeling systems as token consumption/production systems
- Drawing consumption/production models
- Petri-nets and dataflow graphs
- Refinement

- Syntax and semantics
- Syntax and semantics
- Formalizing pictures as bipartite graphs
- Formalizing behaviors as a prefix orders
- Formalizing interpretations as functions
- Formalizing the Petri-nets interpretation
- Formalizing time and scheduling

- Performance analysis
- Throughput and the maximum cycle mean
- Periodic scheduling
- Latency analysis
- Buffering

### Knowledge-Based AI: Cognitive Systems

- Computer Science
- Algorithms
- Artificial Intelligence

- Python

- Introduction to KBAI and Cognitive Systems.
- Where Knowledge-Based AI fits into AI as a whole
- Cognitive systems: what are they?
- AI and cognition: how are they connected?

- Fundamentals
- Semantic Networks
- Generate & Test
- Means-Ends Analysis
- Problem Reduction
- Production Systems

- Common Sense Reasoning
- Frames
- Understanding
- Common Sense Reasoning
- Scripts

- Planning
- Logic
- Planning

- Learning
- Learning by Recording Cases
- Incremental Concept Learning
- Classification
- Version Spaces & Discrimination Trees

- Analogical Reasoning
- Case-Based Reasoning
- Explanation-Based Learning
- Analogical Reasoning

- Visuospatial Reasoning
- Constraint Propagation
- Visuospatial Reasoning

- Design & Creativity
- Configuration
- Diagnosis
- Design
- Creativity

- Metacognition
- Learning by Correcting Mistakes
- Meta-Reasoning
- AI Ethics

### Modeling Discrete Optimization

- Computer Science
- Mathematics

- Minizinc

- Modeling with Sets
- Modeling with Functions
- Multiple Models
- Modeling with Predicates
- Debugging and Improving MiniZinc Models
- Working with Data
- Modeling Scheduling and Packing Problems
- Option Types
- User Defined Functions
- Constraint Programming
- Mixed Integer Programming

### Signals & Systems Part 01

- Electrical Engineering
- Mathematics

#### An introduction to signals and systems

Signals and systems as seen in everyday life, and in various branches of engineering and science: electrical, mechanical, hydraulic, thermal, biomedical signals and systems as examples. Extracting the common essence and requirements of signal and system analysis from these examples.

#### Formalizing signals

Energy and power signals, Signal properties: periodicity, absolute integrability, determinism and stochastic character. Some special signals of importance: the unit step, the unit impulse, the sinusoid, the complex exponential, some special time-limited signals; continuous and discrete time signals, continuous and discrete amplitude signals.

#### Formalizing systems

System properties: linearity, additivity and homogeneity, shift- invariance, causality, memory, stability, rationality, realizability. Examples.

#### Continuous time and discrete time Linear Shift-Invariant (LSI) systems in detail

The impulse response and step response, convolution, input-output behavior with aperiodic convergent inputs, cascade, parallel and cascade-parallel interconnections. Characterization of causality and stability of linear shift-invariant systems. System representation through differential equations and difference equations.

#### Periodic and semi-periodic inputs to an LSI system

The notion of a frequency response and its relation to the impulse response, Fourier series representation, the Fourier Transform, Convolution/multiplication and their effect in the frequency domain, magnitude and phase response, Fourier domain duality.

### Interactive Computer Graphics with WebGL

- Computer Science
- Graphics
- Web

- GLSL
- JavaScript

#### Projects

- Interactive Tessellation
- Painting Program
- Simple CAD System
- CAD System w/ Lighting
- Spherical Texture Mapping

#### Syllabus

- Introduction and Background
- Course Overview
- Outline via Examples
- Prerequisites and References
- A Simple WebGL Example
- Getting Started with WebGL
- OpenGL and WebGL
- HTML and Browsers
- JavaScript

- WebGL
- Square Program
- Shader Execution Model
- Square Program: The HTML file
- Square Program: The JavaScript File
- WebGL Primitves and Viewing
- Tessellation and Twist
- The Sierpinski Gasket
- Moving to Three Dimensions

- The Open GL Shading Language and Interaction
- Color
- GLSL and Shaders
- Input and Interaction
- Animation
- Buttons and Menus
- Keyboard and Sliders

- Displaying Geometry in WebGL
- Position Input
- Picking
- Matrices
- Representation
- Geometry 1
- Geometry 2
- Homogeneous Coordinates
- Some Caveats

- Transformations
- Affine Transformations
- Rotation, Translation, Scaling
- Transformation
- Transformations in WebGL
- Representing a Cube
- Animating the Cube

- Viewing in WebGL
- Classical Viewing
- Positioning the Camera
- Projection
- Projection in WebGL
- Orthogonal Projection Matrices
- Perspective Projection Matrices
- Representing and Displaying Meshes
- Lighting and Shading
- The Phone Lighting Model

- Lighting, Shading and Texture Mapping
- Lighting and Shading in WebGL
- Polygon Shading
- Per Vertex vs per Fragment Shading
- Buffers in WebGL
- Texture Mapping Overview
- Approaches to Texture Mapping
- WebGL Texture Mapping

- WebGL Texture Mapping
- WebGL Texture Objects
- Texture Mapping to the Cube
- Texture Mapping Variations
- Reflection and Environment Maps
- Bump Maps
- Compositing and Blending
- Imaging Applications

- Using the GPU
- The Mandelbrot Set
- Generating the Mandelbrot Set in the CPU
- Generating the Mandelbrot Set in the GPU
- Framebuffer Objects
- Renderbuffers
- Render to Texture

- Render-to-Texture Applications
- Picking by Color
- Buffer Pingponging
- Diffusion Example
- Agent-Based Models

### The Rise of Superheroes and Their Impact on Pop Culture

- Art

- The Secret Origins of Comic Books
- What are the mythic origins of superheroes?
- How did the Great Depression, gangsters, and the escalating conflict in Europe influence the earliest comics?
- How did the first comic strips and books connect with their audience?
- Who was the first “super” hero?

- The Golden Age of Super-Heroes
- What new cultural milieu did many of the original comics emerge from?
- How did America’s entry into World War 2 forever change comic superheroes?
- What are the stories behind the creators and their creations?

- After the Golden Age
- What did the end of the war mean for comics and their patriotic superheroes?
- How were comics writers and artists affected by McCarthyism and the 50s culture of arts censorship?
- How did Cold War paranoia seed a thrilling new generation of superheroes?

- Superheroes of the Silver Age and The Age of Marvel
- How did the Silver Age create new growth in the comic book industry?
- How did Stan Lee forever change the notion of what a superhero is?
- How was Batman’s transformation from kitschy everyman in the TV series to dark knight of justice in the graphic novels emblematic of the shift in the language of comics?

- The Bronze Age to Today
- How has globalization and the information age influenced a new generation of art and artists?
- How has the popularity of superheroes in film and TV changed the nature of comic book fandom?

Final project: creation and exploration of a superhero and supervillain, The Adventurer & The Nihilist

### Statistical Learning

- Computer Science
- Data Science
- Mathematics
- Statistics

- R

- Introduction and Overview of Statistical Learning
- Linear Regression
- Classification
- Resampling Methods
- Linear Model Selection and Regularization
- Moving Beyond Linearity
- Tree-based Methods
- Support Vector Machines
- Unsupervised Learning

### Artificial Intelligence Planning

- Computer Science
- AI

- Introduction and Planning in Context
- What is Planning
- Conceptual Model for Planning
- Planning and Search

- State-Space Search: Heuristic Search and STRIPS
- Heuristic Search Strategies
- A* Tree Search
- Properties of A*
- A* Graph Search
- Good Heuristics
- Structured States
- Structured Operators
- Domains and Problems
- Forward Search
- Backward Search

- Plan-Space Search and HTN Planning
- Graphplan and Advanced Heuristics
- Plan Execution and Applications

## 2014

- Coursera
- EdX
- Future Learn
- Stanford
- Udacity

### Bioinformatics Algorithms (Part 1)

- Biology
- Computer Science
- Algorithms
- Bioinformatics

- Python

- Where in the Genome Does DNA Replication Begin?
- Introduction to DNA Replication
- Hidden Messages in the Replication Origin
- Some Hidden Messages are More Surprising than Others
- An Explosion of Hidden Messages
- The Simplest Way to Replicate DNA
- Asymmetry of Replication
- Peculiar Statistics of the Forward and Reverse Half-Strands
- Some Hidden Messages Are More Elusive than Others
- A Final Attempt at Finding DnaA Boxes in E. Coli
- Complications in oriC Predictions
- Find DnaA boxes in Salmonella enterica
- Open Problems
- Multiple Replication Origins in a Bacterial Genome
- Finding Replication Origins in Draft Bacterial Genomes
- Finding Replication Origins in Archaea
- Finding Replication Origins in Yeast
- Computing Exact Probabilities of Patterns in a String and the Overlapping Words Paradox
- Big-O Notation
- Probabilities of Patterns in a String
- The Most Beautiful Experiment in Biology
- Chemical Basis for Directionality of DNA Strands
- The Overlapping Words Paradox

- How Do We Sequence Antibiotics? (Brute Force Algorithms)
- The Discovery of Antibiotics
- How Do Bacteria Make Antibiotics?
- Dodging the Central Dogma
- Sequencing Antibiotics by Shattering Them Into Pieces
- A Brute Force Algorithm for Cyclopeptide Sequencing
- A Faster Algorithm for Cyclopeptide Sequencing
- How Fast Is This Algorithm?
- Adapting Cyclopeptide Sequencing for Spectra with Errors
- From 20 to More than 100 Amino Acids
- The Spectral Convolution Saves the Day
- From Simulated to Real Spectra
- Sequence a Peptide from a Real Spectrum
- Open Problems
- Beltway and Turnpike Problems
- Sequencing Standard Subpeptides
- Sequencing Cyclic Peptides in Primates
- Gause and Lysenkoism
- Discovery of Codons
- Quorum Sensing
- Molecular Mass
- Selenocysteine and Pyrrolysine
- A Pseudo-polynomial Algorithm for the Turnpike Problem

- Which DNA Patterns Act As Cellular Clocks? (Randomized Algorithms)
- Do We Have a “Clock Gene”?
- Motif Finding Is More Difficult Than You Think
- Implanted Motif Problem
- Scoring Motifs
- From the Motif Finding Problem to the Median String Problem
- Greedy Motif Search
- Motif Finding Meets Oliver Cromwell
- Randomized Motif Search
- How Can a Randomized Algorithm Perform So Well?
- Gibbs Sampling
- Gibbs Sampler in Action
- Complications in Motif Finding
- How Does Tuberculosis Hibernate to Hide from Antibiotics?
- Identify the DosR Motif
- Gene Expression
- DNA Arrays
- Buffon’s Needle (The First Randomized Algorithm)

- How Do We Assemble Genomes? (Graph Algorithms)
- Exploding Newspapers
- Genome Assembly Is More Difficult Than You Think
- The String Reconstruction Problem
- String Reconstruction As a Walk Through the Overlap Graph
- Another Graph…
- …Another Walk
- Seven Bridges of Konigsberg
- Eulerian Cycles and Balanced Graphs
- Euler’s Theorem
- Universal String Problem
- From Euler’s Algorithm to an Algorithm for Finding Eulerian Cycles
- Assembling Read-Pairs
- De Bruijn Graphs Face the Harsh Realities of Assembly
- Assembling a Real Genome
- A Short History of Read Generation Technologies
- Repeats in the Human Genome
- Graphs
- Icosian Game
- Tractable versus Intractable Problems
- Leonhard Euler
- Seven Bridges of Kaliningrad
- Inferring Multiplicities of Edges in de Bruijn Graphs

- How Do We Compare Biological Sequences? (Dynamic Programming Algorithms)
- Cracking the Non-Ribosomal Code
- What is Sequence Alignment?
- The Manhattan Tourist Problem
- Sequence Alignment is the Manhattan Tourist Problem in Disguise
- The Change Problem
- The Manhattan Tourist Problem Revisited
- From Manhattan to an Arbitrary DAG
- Backtracking in the Alignment Graph
- Scoring Alignments
- Local Versus Global Sequence Alignment
- The Myriad Faces of Sequence Alignment
- Penalizing Insertions and Deletions in Sequence Alignment
- Space-Efficient Sequence Alignment
- Multiple Sequence Alignment
- Reconstructing the Non-Ribosomal Code
- Non-Ribosomal Code
- Topological Orderings in Graphs
- PAM Scoring Matrices
- Divide-and-Conquer Algorithms
- Multiple Scoring Alignment

- Are There Fragile Regions in the Human Genome? (Combinatorial Algorithms)
- Of Mice and Men
- The Random Breakage Model of Chromosome Evolution
- Modeling Chromosomes by Signed Permutations
- Reversal Distance
- Sorting by Reversals: Greed is Good But Not Great
- Breakpoints
- Rearrangements in Tumor Genomes
- From Unichromosomal to Multichromsomal Genomes
- Two-Breaks
- Breakpoint Graphs
- Rearrangement Hotspots in the Human Genome
- Constructing Synteny Blocks

### Exploring Neural Data

- Biology
- Neuroscience
- Computer Science
- Bioinformatics

- Python

- numpy
- matplotlib

- What does the brain tell us? Exploring neural responses
- Neurons
- Anatomy of the Nervous System
- Orienting to the Brain
- Approaches to Neuroscience
- Single Unit Electophysiology
- Spike Sorting

- Why are humans unique? Exploring motor control
- Motor System
- Rate Coding
- Interview with John Donoghue
- Python: Histograms
- Python: Polar Plots
- Python: Curve Fitting
- Dimensionality Reduction

- How do we make sense of our senses? Exploring visual objects
- Visual System
- Eye Movements
- Interview with David Sheinberg
- Python: Data Frames
- Python: Integrating Images into Plots
- Animation of Eye Movements
- Who Owns Data?

- What happens when we sleep? Exploring brain states
- Brain Rhythms
- Waves
- Interview with Mary Carskadon
- Python: Power Spectra and Spectrograms
- New and Emerging Techniques

- Delving Deeper: Final Projects
- Donoghue Multi-Electrode Motor Cortex
- Carskadon Sleep EEG
- Sheinberg Visual Processing
- Collaborative Research in Computational Neuroscience
- National Sleep Research Resource

### From GPS and Google Maps to Spatial Computing

- Mathematics
- Computer Science
- GIS

- Java

- Introduction to Spatial Computing
- Defining Spatial Computing
- Interviews with Johannes Schoning, Loren Terveen, Martin Raubal

- Spatial Query Languages
- SQL
- Spatial Extensions
- Multi-table Spatial Queries
- Trends in Spatial Query Languages

- Spatial Networks
- Conceptual and Mathematical Models
- SQL Extensions: CONNECT and RECURSIVE
- Storage of Data Structures
- Algorithms for Connectivity
- Algorithms for Shortest Path
- Interviews with Dev Oliver, Betsy George

- Spatial Data Mining
- Spatial Pattern Families
- Spatial Data Types and Relationships
- Limitation of Traditional Statistics
- Location Prediction Models
- Hotspots
- Spatial Outliers
- Colocations and Co-occurrences

- Volunteered Geographic Information
- Producing VGI
- Pros and Cons of VGI
- WikiBrain
- Interview with Michael Goodchild

- Positioning
- GPS
- Wifi and Cellular Positioning
- Content-based Positioning
- Geoparsing
- Location-field Positioning

- Cartography and Geographic Human-Computer Interaction
- Reference Maps
- Thematic Maps
- Spatialization

- Future Directions in Spatial Computing
- Spatial Databases
- Data Mining
- Advances in Cartography
- Advances in Positioning

### Towards Scottish Independence? Understanding the Referendum

- Why is Scotland having a referendum?
- What does ‘Yes’ mean?
- What does ‘No’ mean?
- What do Scots think?
- The Day After
- What Next?

### Introduction to Forensic Science

- Science

- Introduction to Forensic Science
- Basic Ideas in Forensic Science
- What is Forensic Science
- Application of Forensic Science
- Limits of Forensic Science
- Locard’s Exchange Principle
- Roberto Calvi Case
- Buck Ruxton & the Jigsaw Murders Case
- Forensic Laboratories
- Reconstruction & Re-enactment
- The Woodchipper Murder Case

- Chemical Analysis in Forensic Science
- Introduction to Atomic Structure
- Elemental Analysis
- Analysis of Microscopic Objects
- Napolean Case
- JFK Assassination Case
- Introduction to Chromatography
- GC & HPLC
- Infrared Spectroscopy
- Mass Spectroscopy

- Time of Death
- Recent deaths
- Decomposing Bodies: Putrefaction, Forensic Entomology
- Analysis of Skeletal Remains
- Ötzi Case

- Blood
- Blood Biology
- Tests for Blood
- Precipitin Technology
- Blood Spatter Analysis
- Lord Lucan Case

- DNA
- Introduction to DNA
- Techniques used in DNA Profiling
- Polymerase Chain Reaction (PCR)
- Short Tandem Repeats (STRs)
- Colin Pitchfork Case
- Cold Cases
- Early Uses of DNA Profiling
- Mitochondrial DNA
- DNA Profiling of Other Species
- Peter Falconio & Joanne Lees Case

- Fingerprinting
- History of Fingerprinting
- Principles of Fingerprinting
- Visualising Fingerprints
- Brandon Mayfield Case Summary

- Polymers & Fibers
- Introduction to Polymers & Fibers
- Natural Polymers
- Hair
- Wayne Williams Case
- Sarah Payne Case

- Firearms
- Internal Ballistics
- Gun Shot Residue

- Narcotics
- Types of Illegal Drugs
- Cocaine
- Opium, Morphine & Heroin
- Synthetic Drugs
- Analogs
- Detection and Identification of Drugs

- Toxicology
- Introduction to Toxicology
- Deliberate & Accidental Poisoning
- Toxins & Biological Poisons
- LD50
- Forensic Toxicology
- Alcohol
- Inorganic Poisons - Arsenic
- Inorganic Poisons - Thallium
- Inorganic Poisons - Barium
- Nerve Agents
- Georgi Markov Case
- Alexander Litvinenko Case

- Case Studies
- King Richard III Case
- Annie Le Case
- June Devaney Case
- JonBonent Ramsey
- The Unabomber Case
- Psychological Profiling
- The Soham Murders Case
- Dr. Crippen Case

### Questionnaire Design for Social Surveys

- Social Science
- Statistics

- Overview on standardized interviewing
- Different types of questions
- Measurement error in questions: Bias and variance
- Standardized and conversational interviewing
- From specifying a concept to asking questions

- Response Proces
- Comprehension
- Retrieval
- Judgment
- Response

- Asking Factual Questions
- Facts and quasi facts
- Memory and recall
- Asking sensitive questions
- Mode, privacy and confidentiality

- Measuring Attitudes
- Context effects in attitude questions
- Use of different scales
- Offering don’t know options
- Response order effects

- Testing Questionnaires
- Expert reviews and focus groups
- Cognitive interviews
- Behavior Coding
- Quantitative techniques

- Putting it all together
- The questionnaire from start to finish
- Things to put at the end
- Mode Choice: Implementations for layout
- Self-administered questionnaires

### Experimentation for Improvement

- Science
- Data Science
- Statistics

- R

- Week 1: Why experiment? We consider experiments that can improve processes in your life, and those of the people around you. We explore examples of experiments and case studies of what can go wrong in an experiment as well. Also: demonstrations of how experiments should be run when changing two variables (factorial experiments).
- Week 2: Full factorials in two variables and three variables (also called “factors”), including the study of categorical variables.
- Week 3: Using least squares (regression) models to analyze data from factorial experiments.
- Week 4: Half fractions and fractional factorials, with real case studies and examples. This module is being time-warped over two actual weeks.
- Week 5: Using response surface methods to optimize a system.
- Week 6: Bringing all the prior topics together; in-depth case studies.

### Creative Programming for Digital Media & Mobile Applications

- Computer Science
- Art

- Processing

###### Course Projects

###### Topics

- Lesson 1: Introduction: sonic painter
- Using Processing
- Setting up your Android or iOS device
- Getting started with Sound, Graphics and Interaction

- Lesson 2: Interactive D/VJ app
- Creating a basic interface
- Controlling sound playback with your interface
- Creating images and displaying them on the screen
- Image sequences and animation

- Lesson 3: Audiovisualiser
- Analysing audio signals
- Using algorithms to create graphics
- Controlling graphics parameters with audio signals
- Using different colorspaces
- Controlling media with accelerometers

- Lesson 4: Angrydroids: Creating a Physics Game
- Implementing a basic 2D game
- Understanding and using physics engines
- Creating in-game sound effects
- Creating basic graphics

- Lesson 5: Instaspam: Image manipulation and social media sharing
- Accessing the camera on a mobile device.
- Manipulating images using tints and overlays
- Creating a Graphic User Interface with sliders and buttons
- Sharing media using web services
- Creating a facebook app
- Creating a web app on your server

- Lesson 6: Music machine
- Creating a programmable sequencer
- Making a basic drum machine
- Making a basic synthesiser
- Adding a GUI
- Putting it all together

### Databases

- Computer Science
- Data Science

- SQL
- XPath
- XQuery
- XSLT
- DTD
- JSON
- JSONSchema

- Data Models
- Introduction and Relational Databases
- XML Data
- JSON Data

- Querying Relational Databases
- Relational Algebra
- SQL

- Querying XML Databases
- XPath and XQuery
- XSLT

- Database Design
- Relational Design Theory
- Unified Modeling Language

- SQL Advanced Features
- Indexes and Transactions
- Constraints and Triggers
- Views and Authorization
- On-Line Analytical Processing
- Recursion in SQL

### Logic: Languages and Information 2

- Logic
- Philosophy
- Computer Science

- Prolog

- The Syntax of Predicate Logic; Translations using quantifiers
- Models for Predicate Logic; Classifying propositions and arguments; Finite and Infinite Domains
- Tree Proofs for Predicate Logic; Soundness and Completeness
- Identity; Functions; Counting
- Simplifying Digital Circuits with Timing
- Definite Descriptions and Existence
- Databases, Resolution and Prolog
- Quantificational Scope
- Limits, Continuity and Quantifier Alternation

### Street-Fighting Math

- Mathematics

- Dimensional Analysis
- Easy Cases
- Lumping
- Pictorial Proofs
- Taking Out the Big Part
- Analogy

### HTML5 Game Development

- Computer Science
- Web
- Games

- HTML5
- Javascript

- Canvas

- Optional HTML/Javascript crash course
- Introduction to Canvas rendering
- Atlases
- Map rendering
- Basic Input, handling events
- The entity hierarchy
- Box2D, and using external libraries
- Adding sound
- Asynchronous Loading

### Logic: Languages and Information 1

- Logic
- Philosophy
- Computer Science

- Prolog

- Language and Models of Propositional Logic
- Proof Trees for Propositional Logic
- Combinational Digital Systems
- Vagueness
- Implication and Implicature
- Propositional Logic Programming

### Paradigms of Computer Programming

- Computer Science
- Programming Languages

- Oz

- Recursion/invariants
- Lists/patterns
- Higher-order/records
- Trees
- Semantics
- State/abstraction
- OOP
- Java/exceptions
- Dataflow
- Multiagent Dataflow

### Social and Economic Networks: Models and Analysis

- Computer Science
- Mathematics
- Networks
- Graph Theory

- Introduction, Empirical Background and Definitions:
- Examples of Social Networks and their Impact
- Definitions
- Measures and Properties: Degrees, Diameters
- Small Worlds
- Weak and Strong Ties
- Degree Distributions

- Background, Definitions, and Measures Continued:
- Homophily
- Dynamics
- Centrality Measures: Degree, Betweenness, Closeness, Eigenvector, and Katz-Bonacich
- Erdos and Renyi Random Networks: Thresholds and Phase Transitions

- Random Networks
- Poisson Random Networks
- Exponential Random Graph Models
- Growing Random Networks
- Preferential Attachment and Power Laws
- Hybrid models of Network Formation

- Strategic Network Formation
- Game Theoretic Modeling of Network Formation
- The Connections Model
- The Conflict between Incentives and Efficiency
- Dynamics
- Directed Networks
- Hybrid Models of Choice and Chance.

- Diffusion on Networks
- Empirical Background
- The Bass Model
- Random Network Models of Contagion
- The SIS model
- Fitting a Simulated Model to Data

- Learning on Networks
- Bayesian Learning on Networks
- The DeGroot Model of Learning on a Network
- Convergence of Beliefs
- The Wisdom of Crowds
- How Influence depends on Network Position

- Games on Networks
- Network Games
- Peer Influences: Strategic Complements and Substitutes
- the Relation between Network Structure and Behavior
- A Linear Quadratic Game
- Repeated Interactions and Network Structures

## 2013

- Coursera
- DePaul
- Udacity

### Principles of Reactive Programming

- Computer Science
- Functional Programming

- Scala

- Akka
- ScalaCheck

- Monads
- Functional Programs in a Stateful World
- Futures
- Observables: Event Streams
- Actors
- Supervisors
- Distributed Actors

### Master's Thesis

- Computer Science
- Programming Languages
- Forensics

- Coq

### Introduction to Public Speaking

- Speaking Situations
- Rhetoric, Literacy and Orality
- Performance and Communication Orientation
- Impromptu Speeches
- Outlining, and flowing
- Developing, Arranging, and Phrasing Main Points
- Using Evidence
- Speech Structure
- Pacing and Pausing
- Movement
- The Informative Speech
- Visual Aids
- Style for Clarity and Ethos
- Persuasive Speech
- Argumentative Congruency
- Framing Arguments Strategically
- Using Language Stylistically

### Discrete Optimization

- Computer Science
- Mathematics

- Python
- Minizinc

- Constraint Programming
- Local Search
- Linear & Integer Programming

### Malicious Software and its Underground Economy: Two Sides to Every Story

- Computer Science
- Security

- Assembly

- Malicious Software
- Botnets & Detection
- Rootkits
- Evolution of Malware and AV
- Reverse Engineering
- Polymorphism, Code Obfuscation
- Static Analysis
- Dynamic Analysis
- Mobile Malware
- Specialized Cybercrime
- Pay-per-Install, Exploit-as-a-service
- China’s Online Underground Economy
- The Cost of Cybercrime

### Introduction to Artificial Intelligence

- Computer Science
- Mathematics
- Algorithms
- AI
- Machine Learning

- Overview of AI
- Statistics, Uncertainty, and Bayes networks
- Machine Learning
- Logic and Planning
- Markov Decision Processes and Reinforcement Learning
- Hidden Markov Models and Filters
- Adversarial and Advanced Planning
- Image Processing and Computer Vision
- Robotics and robot motion planning
- Natural Language Processing and Information Retrieval

### Introduction to Data Science

- Computer Science
- Statistics
- Data Science
- Analytics

- Python
- Hive

- Data science articulated, data science examples, history and context, technology landscape
- Databases and the relational algebra
- MapReduce, Hadoop, relationship to databases, algorithms, extensions, language; key-value stores and NoSQL; tradeoffs of SQL and NoSQL
- Data cleaning, entity resolution, data integration, information extraction
- Basic statistical modeling, experiment design
- Introduction to Machine Learning, supervised learning, decision trees/forests, simple nearest neighbor
- Unsupervised learning: k-means, multi-dimensional scaling
- Visualization, visual data analytics
- Ethics, privacy
- Graph Analytics: PageRank, community detection, recursive queries, iterative processing

### Distributed Systems II

- Computer Science
- Distributed Systems

- Scala

- Akka

### Master's Independent Study II

- Computer Science
- Languages
- Security

- Coq

- Gecode

### Natural Language Processing

- Computer Science
- Natural Language Processing
- Statistics
- Machine Learning
- Algorithms

- Python

- Language modeling
- Trigram Language Models
- Tagging Problems
- Hidden Markov Models, Viterbi Algorithm
- Probabilistic Context-Free Grammars, CKY
- Lexicalized PCFGs
- Parse Trees
- IBM Models 1 and 2 for Machine Translation, EM Algorithm
- Phrase-Based Translation Models, Decoding Algorithm
- Log-linear Models
- Maximum-Entropy Markov Models
- Conditional Random Fields
- Forward Backward Algorithm
- Naive Bayes Model
- Inside Outside Algorithm

### Aboriginal Worldviews and Education

- Sociology
- History

- Comparing worldviews
- Aboriginal Education, past, present and future
- Indigenous ways of knowing
- Stereotyping and cultural appropriation
- The relationship between First Nations and Settlers

### Algorithms: Design and Analysis, Part 2

- Computer Science
- Mathematics
- Algorithms
- Graph Theory

- Lua

- Week 1
- Two Motivating Applications (Sequence Alignment and Internet Routing)
- Selected Review from Part I (Optional)
- Introduction to Greedy Algorithms
- A Scheduling Application
- Prim’s Minimum Spanning Tree Algorithm

- Week 2
- Kruskal’s Minimum Spanning Tree Algorithm
- Clustering
- Advanced Topics on the Union-Find Data Structure (Advanced + optional, to be posted later)
- Huffman Codes

- Week 3
- Dynamic Programming and Applications
- The Knapsack Problem
- Sequence Alignment
- Optimal Search Trees

- Week 4
- More Dynamic Programming and Shortest Paths
- Single-Source Shortest Paths, Revisited
- The Bellman-Ford Algorithm
- Internet Routing
- The All-Pairs Shortest Paths Problem
- The Floyd-Warshall Algorithm
- Johnson’s Algorithm

- Week 5
- P, NP, and What They Mean
- Reductions Between Problems
- NP-Complete Problems
- The P vs. NP Problem
- Solvable Special Cases of NP-Complete Problems
- Smarter (But Still Exponential-Time) Search Algorithms for NP-Complete Problems
- The Traveling Salesman Problem

- Week 6
- Heuristics with Provable Guarantees
- Greedy and Dynamic Programming Heuristics for the Knapsack Problem
- Local Search: General Principles, Max Cut, and 2SAT
- Approximation Algorithms
- Local Search

### Master's Independent Study I

- Computer Science
- Languages
- Security

- C++

### Parallel Algorithms

- Computer Science
- Distributed Systems
- Algorithms

- Python

- MPI
- OpenCL

### Computing for Data Analysis

- Computer Science
- Statistics
- Mathematics
- Analytics

- R

- Data Types
- Vector Operations
- Input/Output
- Functional Programming
- Debug Tools
- Plotting, Graphs
- Regular Expressions
- Classes, Object-Oriented R

## 2012

- Caltech
- Coursera
- DePaul
- EdX
- Udacity

### Software as a Service II

- Computer Science
- SaaS

- Ruby

- Rails

- Advanced Rails
- Legacy Code
- Teams
- Version Control
- Design Patterns
- S.O.L.I.D.
- Javascript
- DevOps, Monitoring
- Performance and Security

### Learning From Data

- Computer Science
- Mathematics
- Machine Learning

- R
- Octave
- Python

- The Learning Problem, Perceptron
- Is Learning Feasible?
- The Linear Model I, Linear Regression
- Error and Noise
- Training versus Testing
- Theory of Generalization
- The VC Dimension, Growth Function
- Bias-Variance Tradeoff
- The Linear Model II, Nonlinear Transforms, Logistic Regression
- Neural Networks, Stochastic Gradient Descent
- Overfitting
- Regularization
- Validation, Cross Validation
- Support Vector Machines
- Kernel Methods, Soft-Margin SVMs
- Radial Basis Functions
- Occam’s Razor, Sampling Bias, Data Snooping
- Bayesian Learning, Aggregation/Ensemble Learning/Boosting

### Software as a Service I

- Computer Science
- SaaS

- Ruby

- Rails

- SaaS Architecture
- SOA and Cloud Computing
- Ruby
- Rails
- Behavior Driven Development Design
- Test Driven Development

### Computer Security

- Computer Science
- Security

- Scala

- Cryptography
- Access Control
- Worms, Malicious Software
- Legal/Ethical
- Authentication, Passwords
- Accountability
- Intrusion Detection & Prevention
- Software Security

### Research Colloquium II

- Computer Science

- Tweaking Games as a Research Tool
- Metonymies in Computer Science Education
- Type Checking in the Features of Product Lines
- Using Graph Theory to Aid Protein Folding
- Ideal Game Features
- Differential Context Relaxation in Recommendation Systems
- Games in Higher Education
- Traceability and Verification
- Column-oriented Databases for Analytics
- Content Management Systems as Expert Systems
- Machine Learning Techniques to Show Student Comprehension
- Relationships Between Design Patterns in Practice

### Introduction to Sustainability

- Sustainability
- Environmentalism

- Week 1
- Introduction & Population
- Demographic transition
- Neo-Malthusians
- J-curves and S-curves
- Role of the Developing world

- Week 2
- Population
- The disappearance of the third world
- Demographics
- Population pyramids
- Population projections
- Transition in world population

- Week 3
- Ecosystems, Extinction & Tragedy of the Commons
- Hardin Model
- Objections to the Hardin Model
- ToC Solutions

- Week 4
- Climate Change
- The climate of the near future: hot, hotter, or hottest?
- Weather vs. Climate
- Proxy and data climate evidence
- Climate projections

- Week 5
- Energy
- Peak Oil/Fossil Fuel
- Energy survey, availability, and density
- EROI

- Week 6
- Agriculture and Water
- The hydrologic cycle
- Patterns of water use
- Green Revolution
- GM crops and the precautionary principle

- Week 7
- Environmental Economics and Policy
- Can economists lead the way to sustainability?
- Environmental Evaluation
- Project and policy evaluation
- Incentive policies

- Week 8
- Measuring sustainability
- Ethics and Culture
- The long view
- Carbon Footprints
- Sustainability
- certification
- Energy and water efficiency metrics Sustainability Ethics
- Environmental ideology and conservation movements

### Gamification

- Gamification
- Psychology

- Week 1
- What is Gamification?
- Introduction
- Course overview and logistics
- Gamification defined
- Why study gamification?
- History of gamification
- Categories and examples

- Week 2
- Games
- Gamification in context
- What is a game?
- Games and Play
- Video games
- It’s Just a Game?

- Week 3
- Game Thinking
- Why Gamify
- Thinking Like a Game Designer
- Design rules
- Tapping the Emotions
- Anatomy of Fun
- Finding the Fun

- Week 4
- Game Elements
- Breaking Games Down
- The pyramid of elements
- The PBL Triad
- Limitation of Elements
- Bing Gordon interview

- Week 5
- Psychology and Motivation (I)
- Gamification as motivational design
- Behaviorism
- Behaviorism in gamification
- Reward structures
- Reward schedules

- Week 6
- Psychology and Motivation (II)
- Limits of behaviorism
- Dangers of behaviorism
- Extrinsic and intrinsic rewards
- How rewards can de-motivate
- Self-determination theory
- First half wrap-up

- Week 7
- Gamification Design Framework
- Design Thinking
- D1/2: Business objectives/target behaviors
- D3: Players
- D4: Activity loops
- D5/6: Don’t forget the fun and deploy

- Week 8
- Design Choices
- Two approaches to gamification
- Is Gamification right for me?
- Designing for collective good
- Designing for happiness
- Amy Jo Kim interview

- Week 9
- Enterprise Gamification
- Enterprise applications
- Workplace motivations
- The game vs. the job
- Playbor
- Daniel Debow interview

- Week 10
- Social Good and Behavior Change
- Gamification for good?
- Social good applications
- Social good techniques
- Behavior change
- Susan Hunt Stevens interview

- Week 11
- Critiques and Risks
- Pointsification
- Exploitationware
- Gaming the game
- Legal issues
- Regulatory issues

- Week 12
- Beyond the Basics
- Inducement prizes
- Virtual economies
- Collective action
- The future of gamification
- Course review and wrap-up

### Health Policy and the Affordable Care Act

- Health
- Policy

- Access to health care
- Quality of health care
- Cost of US health care in the international context
- Growth in US health care costs
- Health care malpractice
- History of health care reform
- The ACA and access to health care
- The ACA and cost control
- The ACA and health care delivery
- The ACA and innovation

### Algorithms

- Computer Science
- Mathematics
- Algorithms
- Graph Theory

- Python

- Multiplication Algorithms, Recurrence Relations
- Big-Theta, Graphs, Growth Rates
- Basic Graph Algorithms
- It’s Who You Know
- Strong and Weak Bonds
- Hardness of Network Problems

### Algorithms: Design and Analysis, Part 1

- Computer Science
- Mathematics
- Algorithms
- Graph Theory

- Lua

- Week 1
- Introduction
- Merge Sort
- Asymptotic Notation
- Guiding Principles of Algorithm Analysis
- Divide & Conquer Algorithms

- Week 2
- Master Method
- QuickSort

- Week 3
- Final Thoughts on Sorting & Searching
- Introduction to Graph Algorithms : Graph Representations & Mininum Cuts in Graphs
- Randomized Selection
- Karger’s Minimum Cut Algorithm

- Week 4
- Graph Search: Breadth-First Search, Depth-First Search
- Applications: Topological Sort, Connected Components
- Strongly Connected Components

- Week 5
- Dijkstra’s Shortest-Path Algorithm
- Data structures and how to use them
- Heaps
- Hash Table Basics

- Week 6
- More Hash Tables (Advanced Topics)
- Bloom Filters
- Balanced Binary Search Trees

### Machine Learning

- Computer Science
- Mathematics
- Machine Learning

- Octave

- Week 1
- Introduction
- Linear Regression with One Variable
- Linear Algebra Review

- Week 2
- Linear Regression with Multiple Variables
- Octave Tutorial

- Week 3
- Logistic Regression
- Regularization

- Week 4
- Multi-Class Classification
- Neural Networks: Representation

- Week 5
- Neural Networks: Learning

- Week 6
- Bias-Variance
- Advice for Applying Machine Learning
- Machine Learning System Design

- Week 7
- Support Vector Machines (SVMs)

- Week 8
- Clustering (K-Means and PCA)
- Dimensionality Reduction

- Week 9
- Anomaly Detection
- Recommender Systems

- Week 10
- Large-Scale Machine Learning
- Example of an application of machine learning

### Applied Cryptography

- Computer Science
- Mathematics
- Theory
- Cryptography
- Security

- Python

- Perfect Ciphers
- Symmetric Encryption
- Key Exchange
- Asymmetric Encryption
- Public Key Protocols
- Using Cryptographic Primitives
- Secure Computation

### Distributed Systems I

- Computer Science
- Distributed Systems
- Networking

- Java

- Processes: Threads, Servers, Code Migration
- Communication: RPCs, Messages, Streams
- Clocks: Synchronization, Lamport Clocks, Vector Clocks
- Mutual Exclusion
- Election Algorithms
- Replication
- Fault Tolerance
- Distributed Commits

### Cryptography I

- Computer Science
- Mathematics
- Theory
- Cryptography
- Security

- Python

- gmpy

- Week 1
- Background and overview.
- One-time encryption using stream ciphers.
- Semantic security.

- Week 2
- Block ciphers and pseudorandom functions.
- Chosen plaintext security and modes of operation.
- The DES and AES block ciphers.

- Week 3
- Message integrity. CBC-MAC, HMAC, PMAC, and CW-MAC.
- Collision resistant hashing.

- Week 4
- Authenticated encryption. CCM, GCM, TLS, and IPsec.
- Key derivation functions.
- Odds and ends: deterministic encryption, non-expanding encryption, and format preserving encryption.

- Week 5
- Basic key exchange: Diffie-Hellman, RSA, and Merkle puzzles.
- A crash course in computational number theory.
- Number theoretic hardness assumptions.

- Week 6
- Public key encryption.
- Trapdoor permutations and RSA.
- The ElGamal system and variants.

### Cryptology

- Computer Science
- Cryptography
- Security
- Mathematics

- Python

- Classic Ciphers (Shift Cipher, Vigenere, Hill Cipher, etc.)
- Cryptanalysis, Statistics, Mathematical Foundations
- Modern Block Ciphers (DES, AES) and attacks (differential cryptanalysis)
- Public Key Cryptography (DH Key exchange, RSA, ElGamal) and attacks

## 2011

- DePaul

### Research Colloquium I

- Computer Science

- NYSE Network Architecture
- Graph Theory and Crossings
- Using Simple Algorithms to Replace “Amateurs”
- Data Visualization in Practice
- Technology as Social Ill
- Games to Teach Logical Thinking
- Technology to Solve Social Ills
- Alternative Accessibility Constraints
- Imaging Databases and the Limits of Accuracy

### Theory of Computation

- Computer Science
- Theory

- Turing Machines
- Decidability and Reducibility
- Advanced Topics in Computability Theory
- Time and Space Complexity
- Intractability
- Advanced Topics in Complexity Theory

### Architecture and Design for Multiplayer Games

- Computer Science
- Game Development
- Networking

- C++
- C#

- Visual Studio, C#, Perforce, and XNA
- Serialization, Data Alignment
- Socket Programming, TCP and UDP
- Event Queues for Game Engines
- In-Game Lobbies
- Microsoft Live Networking

### Object-Oriented Software Development

- Computer Science
- Software Engineering

- Java

- Basics
- Objects as Functions
- Architectural Patterns
- Structural Patterns
- Observer/Visualizing a Simulation
- Simulation, Null Objects, Proxies
- Object Creation
- Subclassing and Template Method
- Iterator and Visitor

## 2010

- DePaul

### Formal Semantics of Programming Languages

- Computer Science
- Languages

- Coq

- Basics: Functional Programming and Reasoning About Programs
- Lists: Products, Lists and Options
- Poly: Polymorphism and Higher-Order Functions
- Logic: Logic in Coq
- Ind: Propositions and Evidence
- Imp: Simple Imperative Programs
- Equiv: Program Equivalence
- Hoare: Hoare Logic
- Smallstep: Small-step Operational Semantics
- Stlc: The Simply Typed Lambda-Calculus
- Subtyping: Subtyping

### Programming Language Concepts

- Computer Science
- Languages

- Javascript
- Ruby
- Scala
- Scheme

- Introduction
- Lisp, Scheme
- Recursion, Higher-Order Functions, Let Bindings
- List Functions
- Read-Eval-Print-Loop

- Functional Programming
- Scala
- Data Types; Tuples, Lists
- Immutability
- Function Types and Higher-Order Functions
- For Expressions, List Comprehensions
- Tail Recursion
- Anonymous Functions
- Enumerated Types
- Structured Types
- Option Types
- Recursive Types

- Scope and Storage Management
- Parameter Passing (Call-by-Value, Call-by-Reference)
- Static Scope
- Dynamic Scope
- First Class Functions
- Closures

- Interpreters and Operational Semantics
- Abstract Syntax Trees
- Informal and Formal Semantics
- Operational Semantics of Arithmetic, While-loop, Let, Functions, Closures

- Object-Oriented Programming
- Dynamic Lookup
- Inheritance
- Subtyping
- Encapsulation
- Mixins/Traits
- Prototypes

- Type Systems
- Static Analysis
- Parametric Polymorphism
- Type Inference
- Logic and Constraint Programming
- Generics and Type Variance

## 2008

- Grinnell

### Galilee in the Time of Jesus/Hillel

- Anthropology

### College Writing

- Writing

### Human-Computer Interaction

- Computer Science
- HCI

### Religion in US Public Life

- Religious Studies

### Who Killed Kirov?

- History

### Programming Language Concepts

- Computer Science
- Programming Languages

- Scheme
- PHP
- Icon
- Haskell

## 2007

- Grinnell
- IUPUI

### Foundations of Abstract Algebra

- Mathematics

### Problem Solving Seminar

- Mathematics

### Humanities II: Roman and Early Christian Culture

- English
- Theater

### Algorithms

- Computer Science
- Algorithms

### Reading Laboratory

- Speed Reading

### Computer Organization, Architecture

- Computer Science

### Introduction to Religion

- Religious Studies

### Computer Networks

- Computer Science
- Networks

- Java

### Role of Religion in World Politics

- Political Science

### Evolution of Technology

### Computer Networks Research

- Computer Science
- Networks

### Automata, Formal Languages, Computational Complexity

- Computer Science
- Theory

## 2006

- Grinnell
- IUPUI

### Combinatorics

- Mathematics

### European History: 1650 - Present

- History

### Consumption and Citizenship in Europe

- Political Science

### Operating Systems and Parallel Algorithms

- Computer Science
- Operating Systems
- Parallel Algorithms

- C

### Software Design

- Computer Science
- Software Engineering

- Java

### Art Appreciation

- Art

### Introduction to Symbolic Logic

- Philosophy
- Mathematics

### Intermediate Japanese II

- Japanese

### Computer Graphics for Science

- Computer Science
- Graphics

- C++

- OpenGL
- GLUT

### Foundation of Analysis

- Mathematics

### Computer Science Fundamentals

- Computer Science

- Java
- Scheme

### Introduction to Political Science

- Political Science

### Memory Management, Data Representation, and Formal Methods

- Computer Science
- Theory

- C

### Theater and Drama in Renaissance Italy

- Theatre
- History

## 2005

- Grinnell

### Humanities I: The Ancient Greek World

- Humanities

### Literary Analysis

- English

### Differential Equations

- Mathematics

### British History II

- History

### Problem Solving Seminar

- Mathematics

### Intermediate Japanese I

- Japanese