Friday, May 6: Office hour
Wednesday, May 4: Servers
Monday, May 2: Clients
Wednesday, April 27: Downloading
Monday, April 25: Race conditions
Friday, April 22: Threading
Wednesday, April 20: Lifecycle
Monday, April 18: Lifecycle
Friday, April 15: Intents
Wednesday, April 13: Activities
Monday, April 11: Views
Friday, April 8: Android setup
Wednesday, April 6: Android setup
Monday, April 4: Exam
Friday, April 1: Review
Wednesday, March 30: Scopes
Monday, March 28: Interpreter
Friday, March 18: Interpreter
Wednesday, March 16: Program memory
Monday, March 14: Functions & arrays
Friday, March 11: Parser
Wednesday, March 9: Parser
Monday, March 7: Grammars
Friday, March 4: Types & names
Wednesday, March 2: Lexer
Monday, February 29: Lexer
Friday, February 26: Regular expressions
Wednesday, February 24: Exam
Monday, February 22: Review
Wednesday, February 17: Functions
Monday, February 15: No class
Friday, February 12: Search
Wednesday, February 10: Search
Monday, February 8: Enumeration
Friday, February 5: Enumeration
Wednesday, February 3: Trees
Monday, February 1: Lists
Friday, January 29: Lists
Wednesday, January 27: Recursion
Monday, January 25: Recursion
Friday, January 22: Racket
Wednesday, January 20: Introduction
This course looks at several advanced topics in modern programming. We will be:
- Learning a language based on the functional paradigm, which organizes programs differently than the languages we typically use.
- Designing our own small programming language, to see just how programs are parsed and interpreted.
- Creating apps for Android devices, which rely upon event-based, concurrent, and distributed programming.
CS 256. This course assumes that you can program in Java.
There is no required textbook for the course. Instead, I will regularly direct you to reading materials online.
These are some times when I'm likely to be in my office. Come by at any of these times and you will probably find me, though I may occasionally be pulled away unexpectedly. You can also use email to make an appointment.
- M/W/F: 2-4pm
- T/Th: 2:30-4pm
If your learning or participation in this course may be affected by a disability or any other factor, please talk to me early in the semester so that we can arrange appropriate accommodations. I will do my best to ensure that everyone can learn effectively.
Being in class is crucial for your learning in this course. Absences will leave holes in your understanding of course concepts. If you must miss a class, you are expected to work to get caught up before the next class.
Your final grade will be a weighted average of exams (50%), homework (40%), and reading (10%). This table shows how averages translate to the 4-point scale. Please note that I set a high bar for a 4.0 and there is no such thing as extra credit.
It is important to me that you conduct your work in this course with academic integrity. That means abiding by the specific policies outlined below, as well as the general guidelines in the Student Handbook. It is my responsibility to report violations of these policies to the Dean.
Programming assignments will be due approximately once per week. They will ask you to practice using new syntax and applying new concepts that have been introduced in class.
- Collaboration: You may confer with classmates as you work on the assignments, but you may only submit work that you have personally written and understood.
- Resources: You may consult your class notes and the assigned reading; you may not copy from other people's work.
- Help: Homework help is regularly available at my office hours.
- Citations: In each assignment, you must cite anyone who helped you complete it, as well as any unofficial resources you have used.
- Extensions: You have 5 late days. Each one gives you a 24-hour extension on any assignment. Send me an email if you submit an assignment late and you want to use late days to have it accepted. Once you have used up all your late days, you can receive no credit for late homework, unless there are extraordinary circumstances.
There will be three exams, one for each course unit, with written questions on both code and concepts. The first two will take place in class at approximately weeks 6 and 11 of the semester, and the third will take place during finals week.
For each assigned reading, you may be asked to submit responses to some questions. The deadline for each response will be the start of the first exam after it was assigned.
Things you might find useful:
We will use Sakai for homework submission and grade tracking.