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.

“I’m still friends with folks I worked with decades ago, many who would beat me up in meetings, ripping apart my arguments with what seemed like an ice pick. Still, they made me better.” – Andy Kessler

“It is on the syllabus.”

Wednesday, September 27th, 2023 9:01:34pm

3 — The State is out. Keep this in mind as you build layer upon layer in your code base:

Keep Coding

Tuesday, September 26th, 2023 6:41:23pm

Michael pointed out that I supported the wrong replies on Pizza. (I don’t like this thing.)

To make up for it, I added two more tests. See The Q Game.

Monday, September 25th, 2023 6:08:08pm

The somewhat complicated holiday/due-date schedule this semester means that we run 2 — The Map and C — TCP in parallel. The latter is released now. We will demo the solution and, exploring its functionality, on Wednesday.

Also see the updates to the Sunday post below and the The Q Game rules on fitting a tile to a map.

UPDATE I have added two test cases that illustrate tile placements.

Sunday, September 24th, 2023 6:17:38am

To prepare for Monday’s lecture, please read the following code:
  • the classify functions in plain Racket

  • the classify functions in Typed Racket, if you prefer

  • the classify functions in Typed Racket, if you prefer

In class, we will compare and contrast these variants of the same functionality. The Java variant should help you understand how much its for loops obscure what's going on---in both languages. Yet, writing code in this style also gives us decent performance of this functionality. (There are other variants, and I am convinced we can do even better.)

I have chosen Racket to make the code (almost) equally (in)comprehensible to the entire class. If you do have vague memories of Fundamentals I, some of the code may ring a bell because BSL/ISL are related to, but are not, Racket.

Saturday, September 23rd, 2023 8:55:47am

We have inspected the submitted questions concerning the The Q Game game. As of now, the page is revised in two ways: strike-outs delete words from the rules that might introduce ambiguities, purple words are new additions. (No page changes in any other way.)

Working through examples in public (say piazza) is inappropriate. It’s as if friends working for Amazon and Google, respectively, jointly worked out examples of how to run cloud services.

If you think you can demonstrate another ambiguity with two non-trivial interpretation, contact the instructors.

Thursday, September 21st, 2023 7:55:17pm

Some students requested the code for today’s lecture. Here are gists for the two key pieces:
  • check.java, the Java version of a manually checked temperature implementation;

  • check.rkt, Racket contracts for a checked temperature implementation;

The other programs are derivatives of these.

Wednesday, September 20th, 2023 3:29:07pm

You may wish to run your xgui script (B — GUI) on these sample tests.

Friday, September 15th, 2023 8:35:58am

Concerning B — GUI:

As we found out during the first week, the VDI machines no longer exit and the Linux machines lack monitors. Programs in some of the chosen languages will look for a monitor if the language uses GUI libraries—even if the program does not actually use them because the show option is missing from the command line. In case you get strange error messages concerning displays and monitors when you test your program on a Linux machine, use the following command instead:

$ xvfb-run ./xgui < ForStudents/0-in.json

This will essentially create a mock display for your program on which it can “paint” the desired shapes. (Our test harness will evaluate your programs in such a manner.)

Wednesday, September 13th, 2023 1:29:48pm

In preparation for this afternoon’s or tomorrow’s lecture, you may wish to read The Labyrinth Game, which is the board game that brought our company some luck last year.

Tuesday, September 12th, 2023 8:45:40am

See 1 — The Plan for your next homework assignment, the first milestone of the semester project.

Sunday, September 10th, 2023 3:56:29pm

You may wish to run your xjson script (A — JSON) on these sample tests.

Saturday, September 9th, 2023 12:08:22pm

As mentioned, the design recipe generalizes to almost all tasks in our world (and indeed to many tasks in life .. Fundamentals I used to assign an essay on this point).

Applied to A — JSON, this means that, for example, you must test. Specifically you must test on the delivery machine. Here is the check list that makes up such a test:
  1. ssh into login-students (or another Linux box);

  2. git-clone your “fuzzy elephant” repo to login-students;

  3. navigate (cd) into your “lazy flea"" repo;

  4. make sure A exists and navigate there;

  5. run make if you have a Makefile;

  6. check the executable bit of xjson;

  7. run ./xjson and feed it some JSON value; and

  8. make sure the output looks right.

Of course, this checklist (and more) will also apply when you deliver and deploy software on a job.

In years past, we expected students to figure out this checklist and run through it. This year, we provide a script in /course/cs4500f23/bin that implements the checklist and runs your xjson (mostly) how our test framework runs it.

You can run it directly, like this:
/course/cs4500f23/bin/check-program-A silly-monkey
where silly-monkey should be replaced with the name of your repo.

Or you can add /course/cs4500f23/bin to your path and run the program like any ordinary shell command.

Wednesday, September 6th, 2023 6:39:31am

Once you are paired up with a partner, please sign up at the sign-up link to get a GitHub repo, in which you can then deliver your work.

Monday, July 10th, 2023 4:54:50pm

Welcome to Software Development Fall 2023.

Wake Me Up