Informatics 102 Winter 2010
Schedule


There is no textbook for this course, but I may assign online readings from time to time that are germane, which will become fair game for the Midterm and Final Exam. When readings are assigned, they will be listed here.

The schedule is a work in progress that will be built as we go along, depending on our progress (and, perhaps toward the end, your areas of interest). I will try to post the lecture schedule and readings at least a week ahead of where we are in lecture, so you'll know what to expect, at least in the short term.

Date Lecture Topics Readings Assignment Due
Week 1
Tu 1/5
  • Course introduction
  • Why variety in programming languages matters
  • Categorizing programming languages
  • Understanding one's goals and finding languages that meet them
  • The case for mixing programming languages in a single project
Th 1/7
  • Separation of concerns
  • Crosscutting concerns
  • The case for aspect-oriented programming (AOP)
  • Aspect-oriented programming using AspectJ
  • Join points
  • Pointcuts
  • Before and after advice
The AspectJ Programming Guide Assignment #0 due 5:00pm
Week 2
Tu 1/12
  • Aspect-oriented programming using AspectJ (continued)
  • Aspects that affect only one class (or a few classes)
  • Inter-type declarations
  • Around advice
  • Altering existing inheritance hierarchies
Th 1/14
  • Dynamic pointcuts and control flow
  • The need for metadata in programs
  • Java annotations
Week 3
M 1/18 University Holiday: Martin Luther King Jr. Day
Tu 1/19
  • Pointcuts that match against annotations
  • Using declare error and declare warning to extend compile-time error checking
  • Annotations that carry additional information with them
  • Generalizing aspects using annotations and generics
Assignment #1 due 11:59pm
Th 1/21
  • Binding, revisited
  • The tradeoff between early and late binding
  • Early and late binding in Java
  • Java reflection
  • Using annotations with reflection in Java
Week 4
Tu 1/26
  • A more thorough example of using reflection: QuickUnit
Th 1/28
  • How to choose a programming language for a "real" project
  • Applying requirements to the choice of programming language
Week 5
Tu 2/2
  • Why Erlang?
  • Sequential functional programming in Erlang
W 2/3 Assignment #2 due 11:59pm
Th 2/4
  • Sequential functional programming in Erlang (continued)
  • Message passing concurrency in Erlang
Week 6
Tu 2/9
  • Message passing concurrency in Erlang (continued)
Th 2/11
  • The MapReduce algorithm in Erlang
  • Distributed programming using Erlang (briefly)
Week 7
M 2/15 University Holiday: Presidents' Day
Tu 2/16
  • The case for mixed-language programming
  • Ways that programs in different languages can communicate with one another
Th 2/18
  • Combining Erlang and Java in a single project using Erlang ports
  • The importance of communication protocols when connecting separate programs
Week 8
Tu 2/23
  • Language design as a response to a set of requirements
  • How Erlang's design requirements led directly to its feature set
  • Domain-specific languages (DSLs)
  • When you need a domain-specific language
  • An example of a DSL: Google Protocol Buffers
  • Combining Google Protocol Buffers with Java
W 2/24 Assignment #3 due 11:59pm
Th 2/25
  • A brief overview of domain-specific language design issues
  • The parsing problem
  • How grammars and regular expressions are related to parsing
  • Algorithms for parsing (briefly)
  • Recursive-descent parsing using Java
  • Recognizing that a grammar can be parsed using recursive descent
Week 9
Tu 3/2
  • Designing a simple domain-specific language
  • Syntax considerations: designing a parsable, readable syntax (briefly)
  • Finding the appropriate boundary between run-time libraries and generated code
  • Compiling our domain-specific language to Java
Th 3/4
  • Compiling our domain-specific language to Java (continued)
F 3/5 Assignment #4 due 11:59pm
Week 10
Tu 3/9
  • More about domain-specific languages
  • Understanding Assignment #5 in depth
Th 3/11
  • Where have we been and where do we go from here?
  • Conclusion
Su 3/14 Assignment #5 due 11:59pm
Finals Week
Th 3/18
  • FINAL EXAM: 4:00pm-6:00pm, DBH 1300