teaching machines

SENG 440: Lecture 10 – Master + Detail via Fragments

Dear students, Today we extend our Lately app by applying a master+detail UI to it. It will show both a list of headlines and a selected article. One phones, these two views will appear as separate screens, but on a tablet, they will both appear on the same screen. We will use Android’s Fragment class […]

SENG 440: Lecture 9 – RecyclerView

Dear students, On Friday afternoon, I left my office to go pick up my children from school. They went into lockdown right as I arrived. We weren’t sure what to do, so most of us milled about awkwardly for three hours. It didn’t seem like a good idea to congregrate outside the school gates, but […]

SENG 440: Lecture 8 – AsyncTask

Dear students, Today we explore how to fetch JSON data from a web service, which we will eventually show in a list. Our app, which we’ll call Lately, will grab headlines from News API. In this lecture, we’ll be grabbing headlines from the BBC. Helping us today is Android’s AsyncTask. We’ll continue this example in […]

SENG 440: Lecture 7 – Persisting with Files and JSON

Dear students, We’ve now written four little apps together. We’ve used buttons, text labels, text boxes, and lists to form their user interfaces. We’ve used ConstraintLayout to arrange the widgets. We’ve seen how to handle events with lambdas and schedule events with Handler. We’ve seen how to jump from screen to screen or from one […]

Parametric Puzzle

Check out these these parametric equations: $$\begin{array}{rll}x &=& \cos v \cdot \cos u \\y &=& \sin v \\z &=& \cos v \cdot \sin u\end{array}$$ Do you know what they do? They are most assuredly not magic. Here, let’s rename the variables, and you can try again: $$\begin{array}{rll}x &=& \cos \textit{latitude} \cdot \cos \textit{longitude} \\y &=& […]

SENG 440: Lecture 6 – Explicit Intents

Dear students, Last time we got our apps to invoke other apps indirectly through an Intent. Our requests were implicit; we only described the service we needed performed. The OS then offered us a list of all the apps that could do the job. Today, we look at invoking specific Activitys through explicit Intents. We […]

SENG 440: Lecture 5 – List Activity and Implicit Intents

Dear students, A major theme of mobile development (and the web) is services. Our apps tend not to be monolithic beasts that do everything themselves. Rather, they offload some of their work to other apps that have intentionally exposed as service providers. Today we’ll see Android’s Intent model for invoking services from other apps. We’ll […]

SENG 440: Lecture 4 – Task Scheduling and Activity Lifecycle

Dear students, Last time we saw how activities and layouts get married and make the screens of our apps. Today, we extend our discussion of both of these big ideas as write an app that shows the time in two different places on Earth. We’ll look at ConstraintLayout, updating the user interface without user interaction, […]

Intervals in Deltaphone

For a few years now, schools and industry have been telling kids that they can code. They say the jobs are plentiful, and the salary is enviable—the workforce is waiting. The nobler agents of educational reform will also tell our kids that programming is a creative exercise that will make them better thinkers in other […]

SENG 440: Lecture 3 – Activities and Layouts

Dear students, Now that we’ve examined Kotlin as a standalone language, it’s time to write our first Android apps. We will write a few today: one to emit Morse code’s dots and dashes and one to show the time in two different timezones. Before we forget, here’s your TODO list for next time: Work through […]