MC Reynolds 110
Dr. Brent Yorgey
Although you will probably never need to implement your own full-blown programming language from scratch, thinking in terms of language design is a powerful problem solving technique. In this hands-on course you will develop programming language design and implementation skills through a number of examples, using the Haskell programming languages. Topics to be covered include parsing, type checking, interpreters, abstraction, compositionality, and embedded domain-specific languages. As a final project, each student creates and implements a domain-specific language of their own design.
Upon completing this course, you will be able to:
Your learning in the course will primarily take place through
modules which will be done during class time in teams of 2
or 3. Each module will guide you through a learning process on a
particular topic. Modules not completed during class time should be
completed with your group outside of class.
To be eligible for credit, a reasonable attempt at a completed module
must be turned in before the second class meeting after the last day
the module is worked on in class (for example, if Monday and Wednesday
are spent working on a module in class, the completed module must be
turned in before class the following Monday). If a first submission
of a module is not made by this deadline, you may still request
feedback on a later submission of the module, but it will not receive
A submitted module will either receive credit or no credit based on
whether it is complete and correct. Submitted modules will receive a
credit/no credit grade and feedback within two business days of
submission. If a module is submitted before the deadline but receives
no credit, you may continue to resubmit it any number of times based
on feedback until it receives credit. There is no deadline or penalty
for module resubmissions.
There will be four three projects available to complete throughout the
semester. These projects will give you a chance to demonstrate and
apply the things you have learned through the modules.
Unlike modules, projects must be completed individually. Since this
is the one and only opportunity for you to demonstrate individual
mastery of the material, academic integrity should be taken especially
Each project will be evaluated via specifications (a set of
criteria) for each level. Projects meeting all the criteria for a
given level will receive credit for that level; projects that do not
meet all the criteria will not receive credit for that level.
Projects may be submitted any time during the semester, up until
Monday, May 10th (inclusive).
Submitted projects will be checked and returned with feedback within
two business days of submission.
This course uses specifications grading. Your final grade in the
course is based on the number of modules and projects satisfactorily
completed, and the level of the completed projects. Each row in the
table below shows what you must accomplish in order to earn a certain
letter grade in the course. For example, to earn a B, you must
complete at least 11 modules, one project at Level 1 (or higher),
two one project at Level 2 (or higher), and at least one project
at Level 3.
Although you and I play different roles in the course, we both have
your learning as a common goal. There are things I expect from you as
a student in the course, but there are also things you can expect of
me as the course instructor and facilitator.
If I am not fulfilling my responsibilities outlined below, you are
welcome (and encouraged!) to call me out, perhaps via the anonymous
feedback form. I will also
initiate a conversation if you are not fulfilling yours. However, none
of us will meet all of the expectations perfectly—me included!—so
it’s also important that we have grace and patience with one another.
Attendance in this class is not required as part of your grade.
However, if you have been working in a group and are not planning to
attend class, it is courteous to let me and your group members know so
that we can reassign groups if necessary.
If you have chosen to attend class in person, you are expected to do
so consistently; you may not decide to attend remotely some days just
because you feel like it. However, there are legitimate reasons
for attending remotely, such as feeling ill or travelling unavoidably.
If you have a documented disability or some other reason that you
cannot meet the above expectations, and/or your learning would be best
served by a modification to the usual course policies, I would be
happy to work with you—please get in touch (via Teams or email)! The
course policies are just a means to an end; I don’t care about the
policies per se but I do care about you and your learning.
It is the policy of Hendrix College to accommodate students with
disabilities, pursuant to federal and state law. Students should
contact Julie Brown in the Office of Academic Success (505.2954;
firstname.lastname@example.org) to begin the accommodation process. Any student
seeking accommodation in relation to a recognized disability should
inform the instructor at the beginning of the course.
Hendrix College values a diverse learning environment as outlined in
the College’s Statement on Diversity. All members of this community
are expected to contribute to a respectful, welcoming, and inclusive
environment for every other member of the community. If you believe
you have been the subject of discrimination please contact Dean Mike
Leblanc at email@example.com or
501-450-1222 or the Title IX Coordinator Allison Vetter at
firstname.lastname@example.org 501-505-2901. If
you have ideas for improving the inclusivity of the classroom
experience please feel free to contact
me. For more information on
Hendrix non-discrimination policies, visit
Hendrix recognizes that many students face mental and/or physical
health challenges. If your health status will impact attendance or
assignments, please communicate with me as soon as possible. If you
would like to implement academic accommodations, contact Julie Brown
in the office of Academic Success
(email@example.com). To maintain
optimal health, please make use of free campus resources like the
Hendrix Medical Clinic or
Counseling Services (501.450.1448). Your health is important, and I
care more about your health and well-being than I do about this class!