Exam grades should be available online. This assumes that I set the visibility options correctly. I think I did, but blackboard can be mysterious.
In class Tuesday I set the due date for Project 1 for October 6. I would like to push the due date to October 8. I forgot that many students are attending Grace Hopper this week and will not be in class today to ask questions or have time to work on the project. So, October 8 is the day.
I’ve added lectures up through September 24 (today) to the Blackboard site.
Project 1 is now available. I have not assigned a due date yet as we need to talk about type checking. However, you should be able to complete the first exercise after Thursday’s lecture.
As mentioned in class last week I am running an online conference this week. While I will be teaching my classes as normal, I have a conflict with office hours today, 22 September. No projects due, so hopefully this will not prove to be a problem.
I am seeing an issue with Project 0 dealing with
AE in constructors. Specifically,
(Plus l r) and
(Minus l r).
Both constructors take two arguments of type
AE not of type
Therefore, the test case:
evalAE (Plus 1 2)
will not typecheck. You must use arguments of type
not arguments of type
Int. To correct this use:
evalAE (Plus (Num 1) (Num 2))
The same problem is occuring in code snippets that I see. Make sure
you don’t try to use
Int where you should be using
I’ve gotten a couple of questions via email about testing Project 0. There are all kinds of ways to do your testing and when I grade projects I will look first at your tests. If your tests are sufficient, I’m done. If not, I have a collection of tests that I will use. Note that your grade will not be lowered if your tests are not sufficient. You’re program will just be subjected to my tests.
A couple of things I would suggest trying. One is to define a
in your code and call your test cases from the main program. Have a
few test cases for each interpreter or even the same test cases for
each interpreter other than the 4th where you need to integrate the
parser. Another approach is to just include test cases at the bottom
of your file that execute when the file is loaded. This is quite
simple to do by just calling your interpreters directly. Finally, an
approach I like is defined your test cases as a list of terms. Them
map your interpreters across the list. The resulting list will record
the output of your tests.
If you want to use QuickCheck, have right at it. There are chapters in
the online text that describe how to use QuickCheck. I’m not covering
that information in class and you are not responsible for it, but
there’s likely enough there to allow you to use
QuickCheck. Interestingly, both QuickCheck and Parsec (parser tool)
are monadic. They don’t use
Maybe, but do implement the
I believe recordings of lectures are now available on the course Blackboard site. You will be able to access them on a content page called Lectures. The system for posting lectures seems to have changed from last semester, but I believe I got it right. There is one lecture missing that did not record properly. Sorry about that.
If you have visited the book/notes pages for class you have undoubtedly discovered that math equations are not rendering properly. This started yesterday when I pushed changes to correct one single unbalanced parenthesis. My brain will not allow unbalanced parenthesis go remain unbalanced. As they say, no good deed goes unpunished.
What I have learned since then is GitHub updated the version of Kramdown they use to render pages. I use GitHub Pages for all my websites and highly recommend it. Until now. This new version handles Mathjax differently than the previous version. In English, they broke their rendering system for everyone who embeds equations.
I am working on a fix. If solutions I’ve seen posted actually work we should have properly rendered pages soon. That is a big if. Please bear with me as I debug this issue and watch for updates.
I’ve found a fix for my website issues. I’ve fixed the page you will need for Project 0 completely, but other pages will rewquire manual work. Bear with me as I get those edits made. I guess the one good thing in all this is the math seems to look a bit better than it did.
I just formally updated the due date for Project 0 to September 15th. It is not due on the 8th!
I had planned to use the same zoom meeting for both office hours and class. However, folks are joining the zoom meeting for early and accidentally ending up in office hours. So, I’ve created a new zoom meeting for office hours. The link can be found on the blackboard site for both class sections.
Project 0 is now available if you want to get started. I provided a template file that sets GHC options, defines the
AE data type, and defines signatures for each function required for the project. Hopefully this will help you get started. Due date is currently September 8, but that may change as I see how class progresses.
Please note that a parser from concrete syntax to abstract syntax is required only for Exercise 4 and I provided the parser in the template file for you. Also note that numbers in this parser are naturals and should never be negative. This means you will need to do some kind of error checking to catch problems.
We’ll talk about testing later, but if you are brave there is a QuickCheck implementation for part of this language in the examples associated with the text. I do not expect you to use QuickCheck, but I will use it for grading.
I just posted information about the exam including a topic list to guide your preparation. The exam will be available from 1:30 on Thursday the 15th until 1:30 on Friday the 16th. Once you start the exam you will have 75 minutes to complete it. I will be available on zoom from 2:30-3:45 (normal class time). At 2:30 I will explain the exam and answer any questions you might have. I’ll stay online until 3:45.
We will review for the exam in class on October 13. I will go through the topics list and answer any questions you have. Please bring your questions to class. If there are no questions the review will be short!
Welcome to the website for EECS 662 - Programming Languages at the University of Kansas. Contents of this blog are available via an Atom feed that can be viewed using any RSS reader. Use this url. Please check here frequently for breaking news and information about projects and exams.
The language extension to use GADTs in the most recent versions of GHC is:
Include this pragma at the top of your source files and the GADT notation I use in class will be available.
In my notes and in class I have been using the GADT notation when defining data types. I do this because it closely resembles other languages that I use and we will most likely use GADTs later in the semester.
If you prefer the traditional notation that you learned in 368, you are more than welcome to us it. For early projects, there is no read advantage to using the GADT notation.