On this page:
Software Development

Software Development

Software Development

From the first day of the semester forward we expect students (you) to visit this page once per 24 hours.

“To be any kind of professional means being willing to tell the client a truth he doesn’t want to hear.” – Holman W. Jenkins, Jr.

image Friday, September 10th, 2021 11:10:42am

A memo needs a header. To: Ben Lerner, co-CEO, co-CTO, co-CfooO, co-CbarO of GamesGalore!
From: Matthias Felleisen, mere developer
Date: 8 September 2021
Subject: the choice of programming language

After a brief investigation of several languages with respect to the requirements document, our team has decided to use Racket for the first game project.

It addresses the stated requirements. Racket meets all four explicitly stated requirements. (1) When a Racket application is launched, the launcher applies the exported main function to the command-line arguments on a position-by-position basis. Alternatively a program can access the arguments via a call to current-command-line-arguments. (2) The JSON module in the standard library accommodates stream-based parsing. (3) Dating back to its very origins, Racket comes with a highly expressive, portable GUI framework. While it is somewhat dated compared to web frameworks, it is far more than a “rudimentary” framework, and an interface will look pleasing to the eye. (4) Finally, Racket has modules in the standard library for several conventional protocols, including udp, tcp, ftp, and http. The documentation [1] for these pieces of functionality is by far the largest and best organized of all candidate languages, though perhaps a bit less professional than Java’s.

Every paragraph is dedicated to one thesis and its support. As for the “nice to have” part of the requirements, the Racket package comes with a (somewhat slow) IDE with some unusual features. Additionally there are several Racket plug-ins for VSCode; one of them has the official support of the Racket team [2]. The language supports several built-in unit-test frameworks, and its tool suite comes with a unit-test element. The Racket team has published research papers on debuggers and profilers, and it is well-known that their publications are always supported with quality implementations.

Punctuation such as ":" must be used according to American style guides. One aspect distinguishes Racket from all other languages on our list: its extensive meta-programming facilities. With these facilities, we expect to build abstractions that separate specifications from implementations, making the code easily accessible and—with such focused single points of control—easily modifiable.

Admitting to downsides is a good idea. The easily identified downside of Racket is its extensive use of awfully round parentheses, which application developers obviously have to hate. We have asked the Racket team to add support for braces, which in all likelihood will also increase the language’s performance. (We insisted on not adding required white-space tabs, because it is well known that such languages are slow.)

You get a bonus point for cross-references that support your claims.

[1] See docs.racket-lang.org. The search box gives easy access to the relevant documentation.

[2] See the front-page of racket-lang.org, specifically the box on editors and IDEs.


Thursday, September 9th, 2021 7:29:40am

Homework TAHBPL B — The Very Basics is out.


Wednesday, September 8th, 2021 4:43:44pm

This is a simple test concerning changes to the web site.

First, a careful reader of the web pages discovered that some sections still referred to “remote” participation. These passages were left over from a time when it wasn’t clear whether we’d go hybrid or in person. They are removed now.

Second, we had to move some office hours. The ones posted now are going to stay until we have a better sense of how much/little need there is.


Saturday, July 10th, 2021 5:30:41pm

Welcome to Software Development Fall 2021.

See Abstract for a concise course description.

The quote at the top of the page characterizes how the instructors will lead this course as professionals. They firmly embrace the idea that if you pay a lot of money for education, the instructors have an obligation to deliver as much value as possible. The course is an intensive experience.

If you choose to take the course, familiarize yourself with the web site as quickly as possible. For the first couple of weeks, TAHBPL will grow every couple of days; after that, Project Milestones will evolve every week. Any out-of-the-ordinary changes will be announced on this front page.


Degüello (No Surrender!)