CS638 Course Web

by Mike Gleicher on September 4, 2015

in News

This is the course web for the Fall 2015 CS638 Special Topics in Computing (JavaScript and Web Programming) class.

The course web page is the primary mechanism for communicating with the class. Students are responsible for the content on the web page. You can subscribe to announcements by either RSS or email subscription.

There is also a course Canvas page for discussions and turning in assignments. Announcements will always be made here, and we’ll give you links to important things in Canvas.

Grades and Grading

by Mike Gleicher on December 24, 2015

in News

I accidentally made a posting about 559 to the 638 web site. Sorry. There are no final exam grades for 638.

Some of you are reporting your grades appear as “S” – I believe that the university uses “Satisfactory/Unsatisfactory” in place of “Pass/Fail.”

So, if you see an “S” think “you passed.”

Sorry for the confusion.

Some Info on Final “Grades”

by Mike Gleicher on December 22, 2015

in News

Since some people are already asking…

First: this was a pass/fail course. Because of the way the university’s computers work, I have to give you a grade, with the understanding that it will be converted to a P/F for each student. (assuming that you actually signed up pass/fail). If you see a grade and are unhappy with it, well, you shouldn’t be seeing it to make you be unhappy.

I apologize to those of you who truly did great work in this class: I have no way to reward you. I didn’t collect sufficient information to consistently identify you. Hopefully, the increased learning, the satisfaction of doing great stuff, and the admiration of your peers (who got to see it when it was posted publically) is enough reward.

Second: if you look at your grades on Canvas, you will notice that it will often say “2/4” or “2/0” on later assignments – even if you did an amazing job. For the later assignments, it was purely check/no-check grading. In my view, it’s obvious that all scores are 2 or 0 – but it might not be clear to you that when you got a 2 on P6 that was the highest score you could get.

Third: Failing: You will receive a failing grade if you (1) turned in half (or fewer) of the graded assignments or (2) turned in less than 2/3 but many of the assignments you did were poor (on things where we did more than check/no check grading). In all cases, people in category 1 also turned in sub-par assignments for the few they did turn in. For the 2 people in category 2, all of your assignments were examined carefully. I am guessing that those of you who failed are probably expecting it (and also are unlikely to read this).

TypeScript Resources

by Mike Gleicher on December 13, 2015

in News,Readings

(We will talk about TypeScript in the last lecture of the class. You won’t have to read about it, or do anything with it. But in the event I inspire you to learn more about it, here are some resources).

I am just learning about TypeScript myself… so these resources are what more of “what I’ve been looking at to understand it” – than something I can say I’ve actually made use of in starting to do TypeScript programming.

The official TypeScript web page has a tutorial, which focuses on how to get the compiler set up, and gives a basic example. The “HandBook” gives all the gory details – but in a way that makes it pretty easy to learn what is going on.

The Definitely Typed web page is the place to find definition files for the various libraries you use in JS and want to access from TypeScript. They have a really nice list of resources to Learn TypeScript.

There are some random bloggers that talk about their experience with TypeScript, which can be interesting since it gives a sense of why different people like/dislike it.

  • NCZOnline (from 2012) – a nice introduction. I think some of it is a little out of date as both TypeScript and JavaScript have evolved. But it gets the main points across.
  • TypeScript DeepDive – this is a whole book. It focuses on how TypeScript implements “future” JavaScript (as of 2015, ECMA6 is still future).
  • A random blog post about getting started with typescript. One of the first that came up for me. Gets at a few basic features in an easy way.


by Mike Gleicher on December 12, 2015

in News

I put “Grading” in quotes because this class is supposed to be pass/fail. But, like so many other things this semester, things don’t always go according to plan.

For students who have been taking this class seriously, trying to do the assignments, coming to class, participating in discussions, … Thank you. I can’t reward you with a better grade, but hopefully, the fact that you learned more (and maybe helped others learn) is an even better reward. I apologize that you haven’t gotten more feedback over the course of the semester.

As far as deciding whether or not you are passing: I appreciate that this class was an experiment and I’ve been bad at giving people feedback. In return, I’ve tried to be as lenient as practical in accommodating people who do things late. There are some limits.

You will pass this class if you’ve at least tried (that is, turned something in, even if its not perfect) to do most of the assignments. I appreciate that we haven’t given you lots of feedback. So, as long as you’ve been turning things in, you’re OK. Now is not the time to go back to the early parts of the semester and just hand in something so you get credit, but it is a reminder to at least try to do all of the later assignments.  (we’ll probably grade puzzle 4 this weekend, puzzle 5 and the design assignment early in the week, and puzzle 6 early in exam week). For these assignments, trying is better than not trying (in terms of passing).

If you judged by the number of questions we get in class (or before/after class), or the number of questions I get in office hours (or even by email), you might guess that everyone understood that they needed to do and how to do it. I realize this isn’t actually the case. But it does limit my sympathy for someone who says “I didn’t realize we had assignments.”

Failing someone is a big deal – so I don’t take it lightly. For this reason, there is no hard and fast rule. I’ll look at each person individually – but in many cases it’s pretty clear. If you didn’t turn in anything (or at least make an honest try) for most of the assignments, you know it. Although, I’m guessing you’re not reading this.

An obscure thing I’ve learned about grading: even though this class is pass/fail, I actually assign you a grade that gets converted to a P or an F. Unfortunately, I don’t have good enough information to assign grades in a meaningful way. So, if, by chance, you see what grade got put on my grade sheet, remember it was only something I put there so it gets converted to the right thing. If you want to complain about it, you’ll be revealing the fact that you didn’t follow instructions and sign up for the class pass/fail.

The Last Lectures and Assignments

by Mike Gleicher on December 12, 2015

in News

Tuesday, December 15th will be the last lecture for the class. I’ll talk about transpiled languages (notably TypeScript), and probably some of the other tools that I use (or we use in my group) like D3, SVG – and maybe some of the ones I want to use (like model/view/controller frameworks).

There is no assigned reading. I do recommend that you read up on Bootstrap (as part of puzzle 6) that has suggestions on things to read, and that you check out TypeScript (see their webpage – and I’ll post a list of recommendations).

As you hopefully noticed, Puzzle 6 has been posted – it’s a chance to try out the things Eric showed in class. Now is also the time to make sure you’re caught up with other things (Puzzle 5, if you haven’t done it, the design assignment, …).

I expect to do “grading” for this class on December 21 – so please make sure everything is turned in before then.

Programming Puzzle 6: Bootstrap

by Eric Alexander on December 12, 2015

in Assignments,News

For this assignment, you will be performing a task that is relatively common within web design: creating a layout consisting of a header, three columns of content, and a footer.



Specifically, you will be creating a menu for a restaurant. The header will contain the name of your restaurant, the columns will contain sections of menu items, and the footer will contain disclaimers and extra information.

While such a layout seems as though it should be trivially easy to create, it is rather cumbersome to do with standard CSS functionality. This is where libraries like Bootstrap come into play. As was discussed in class this week, Bootstrap gives its users the ability to create complex layouts, interactive pieces of functionality, and clean, consistent, professional design in very easy and intuitive ways.

The Template

We have created a template HTML file containing menu items and sections that can be downloaded here:

HTML Menu Template

JSBin version (NOTE: Remember that Bootstrap’s layouts are fluid, so what you see may be affected by using smaller windows, as in JSBin.)

This file contains the CDN links necessary to incorporate Bootstrap CSS and Javascript libraries. You are free to update the menu as you wish, or create your own items.

Your task is to take this template and change it to match the format above. With Bootstrap’s grid system, this should be relatively simple as compared to standard CSS-only techniques.

Actually, your task is to try out bootstrap and make the menu nicer – at a minimum make it multi-column (as we did in class) – but try adding other stuff. Make the menu as cool as possible. Although, we understand that during exam season, doing the minimum (making it multi-column) might be all that people do.

Turn-in mechanism

Your final assignment should be a self-contained HTML file. But it doesn’t have to be (a link to anything that solves the problem is fine). JSBin links are totally fine (you might not need the debugger for this assignment, so JSBin can be fine).

We’ll turn things in via a graded discussion: on canvas. Please make a posting with a link to your menu. You can also ask questions and give feedback to your peers.

To get credit for this assignment you need to make 2 posts: one with a menu (that at least tries to get multi-column), and one either answering a question or giving someone else some feedback.

This assignment is due when exams start (December 17th) – but we will accept late assignments until we do grading (maybe on the 20th of December, maybe the 21st). I recommend you do it before the 20th in case we start early – once we’ve done grading, we can’t go back to add things.


Bootstrap’s documentation is quite thorough and can be found here: http://getbootstrap.com/getting-started/

There have also been a number of tutorials developed, including that by W3 schools: http://www.w3schools.com/bootstrap/

Course Evals

by Mike Gleicher on December 10, 2015

in News

This class will do course evals online. Please do an evaluation for this class. Even if you don’t come to lecture regularly (it’s a chance to tell me why).


If you go there, you can do online evals for all your classes using this system.

Because of the experimental nature of this class, feedback from evaluations is particularly important. Clearly, this class could be improved – and I’d really like to hear people’s ideas as to what went right and what went wrong. I really do read the evaluations, and act upon them. (in fact, the existence of this class is based on some feedback that suggested students wanted it)

If you prefer to give feedback non-anonymously, I welcome it as well (send me email, catch me after class, …). However, please do the online survey as well.

Also: the use of online evaluations in our department is an experiment. If you have feedback on that, please let me know (since I am involved in getting the department to switch over).

No Assignments… (and a chance to catch up)

by Mike Gleicher on December 4, 2015

in News

At least one person noticed there was no assignment for this week. And I haven’t posted one for next week either. And I didn’t update the “week in 638” either.

For those of you who were keeping to the schedule – I’m sorry.

Hopefully, you’ve done all the old stuff (Program 5 and the Design assignment). If not, you get a little chance to get caught up.

For the next topic, it’s hard for me to come up with things for you to read before lecture – so I will give you the readings (and a programming assignment) after Tuesday’s lecture – this will be a chance for everyone to catch up.

In class on Tuesday, we’ll talk about Bootstrap. A very popular library/framework – I’m not exactly sure what to call it. Part of the problem with Bootstrap is that it is the answer to a bunch of questions – but until you ask those questions, it’s hard to be motivated to learn how to answer them.


In class on Tuesday (12/8), we will try to do some things (like the modal dialog that we talked about in the last class) – and see how hard they are. And then we’ll see how Bootstrap makes them easy. After that, you’ll hopefully be motivated to learn about Bootstrap. To help motivate you, we’ll give you an assignment to do some of those same things we do in class (which will be much easier with Bootstrap – or something like it).

If you’re wondering, the last class day (12/15) we will talk about TypeScript. I need the 2 weeks to learn about it myself – but it’s very cool.

Office Hours

by Mike Gleicher on November 24, 2015

in News

I will miss my Wednesday 11am office hours this week (11/25) and next (12/2).

As always, you can send me email and schedule an appointment, or talk to me after class.

The week in 638: Thanksgiving Edition (Nov 23-27)

November 22, 2015

This is a rare class that is no affected by Thanksgiving! Since we have lectures on Tuesdays, and assignments due at the beginning of the week… Hopefully, you will be wrapping up the old stuff (Programming Puzzle 4 and 5). This week we’re moving on to a very different kind of topic: visual design. No, […]

Read the full article →