SENG 440: Lecture 2 – Conditionals, Functions, and Classes
Dear students, Last time we introduced Kotlin as our tool for developing Android apps this semester. This time we continue that discussion but raise the complexity a couple of notches. We’ll look at conditional statements to choose between values and code, functions and classes to manage complexity, and lambdas to pass code around to other […]
SENG 440: Lecture 1 – Mobility and Kotlin
Dear students, Welcome to SENG 440! I’m visiting the University of Canterbury thanks to Erskine Fellowship Program. When I’m not in Christchurch, I live and work in the north central part of the United States in a state called Wisconsin. I’m glad to be here and to be teaching this course in particular. I’ve taught […]
SENG 440: Project 1
See the PDF.
SENG 440 – Topics in Mobile Computing
Course Information Syllabus Enrollment: 34 Lectures Projects
CS 330: Final
See the PDF.
CS 330: Lecture 39 – Exit(0)
Dear students, Today we close out our formal exploration of the stuff of programming languages. This is what we said we’d look into in the syllabus: Recognize and exploit the strengths of three major programming paradigms: imperative, functional, and object-oriented. Reason about the strengths and weaknesses of various type systems. Weigh the costs and benefits […]
CS 330: Lecture 38 – Automatic Test Running Via Metaprogramming
Dear students, Last time we saw how we could add a hook in Ruby so that when a non-existent method is called on a object, we can still execute the desired action. method_missing lets us write really virtual methods—ones that don’t even exist. Our code effectively used information about the method that would have been […]
CS 330: Lecture 37 – Object-relational Mapping Via Metaprogramming
Dear students, Metaprogramming is our theme for this last week of the semester. What is metaprogramming? It’s when code generates code. It’s when user input is used to generate new classes, methods, and so on. You’ll probably all felt at certain points that the code you are writing probably didn’t need to be written by […]
CS 318: Final Presentations
Dear students, This week we close out the semester with client project presentations. During each presentation, each audience member will write down feedback for the presenter on a quarter-sheet of paper. Here are some topics to address: How effectively did the speaker communicate about the client and purpose of the site? How was time used […]
CS 330: Lecture 36 – Taming Recursion
Dear students, We’ve seen that Haskell does some pretty crazy things: it infers types, it supports this crazy pattern matching stuff, it disallows side effects, and it computes things lazily. Let’s look at one last crazy thing it does: it uses recursion for everything! There are no loop control structures. Normally, when you think of […]