On this page:
1 Prerequisites and Description
2 Course Organization
2.1 Research Papers
2.2 Practical Material
3 COVID-19
4 Grading
5 Attendance
5.1 Reading Days (Presenting)
5.2 Reading Days (Not Presenting)
5.3 Practice Days
5.4 Midterm
5.5 Final Project
6 Students with Disabilities
7 University of Maryland Policies for Undergraduate Students
8 Academic Integrity
9 Right to Change
10 Course Materials
7.9

Syllabus

    1 Prerequisites and Description

    2 Course Organization

      2.1 Research Papers

      2.2 Practical Material

    3 COVID-19

    4 Grading

    5 Attendance

      5.1 Reading Days (Presenting)

      5.2 Reading Days (Not Presenting)

      5.3 Practice Days

      5.4 Midterm

      5.5 Final Project

    6 Students with Disabilities

    7 University of Maryland Policies for Undergraduate Students

    8 Academic Integrity

    9 Right to Change

    10 Course Materials

1 Prerequisites and Description

There is no explicit prerequisit for CMSC 388X, but we highly recommend students to have taken CMSC 330. We assume basic knowledge of functional programming in OCaml, operational semantics, and the lambda calculus.

CMSC 388X is an introduction to research in the field of programming languages (PL) that is specifically tailored to undergraduate students. We will explore foundational results in PL research as well as the skills and techniques used in developing new research.

2 Course Organization

As this is the first semester for CMSC 388X, the organization of the class is still under active development!

CMSC 388X will meet twice a week, with the first meeting of each week focusing on papers and the second meeting focusing on lambda calculi, type systems, and other important concepts in PL research.

2.1 Research Papers

The class will read and discuss published PL research each week. We understand that research papers can be dense, difficult to comprehend, and otherwise very time-consuming to read. Part of the goal of CMSC 388X is to help you develop techniques for effectively reading research papers.

We also will not expect every student to read every paper in its entirety each week. Instead, students will be assigned a specific paper (possibly with a small group of other students). It will be their responsibility to have read this paper in its entirety prior to the scheduled discussion for that paper, and then lead a discussion about the paper.

When it is not your turn to present/lead discussion, we still expect you to read some of the scheduled paper. Specifically, we expect students to have read the Abstract, Introduction, and Conclusion sections, as those can give at least some information to use in discussion. (But we heavily encourage students to read as much of every paper as possible.)

2.2 Practical Material

The other meeting each week will focus on developing practical skills for conducting PL research. For example, we will implement a series of interpreters based on the simple lambda calculus, adding features to the basic language until we arrive at a more complex and fully-featured language.

From there, we will shift focus to the development of interesting type systems using a different system. Throughout this process, we will use operational semantics to model the features with which we wish to extend our languages.

3 COVID-19

As the COVID-19 pandemic continues, we refer students to the Provost’s FAQ on Fall 2021 instruction.

Face coverings over the nose and mouth are required while you are indoors at all times. There are no exceptions when it comes to classrooms, laboratories, and campus offices. Students not wearing a mask will be given a warning and asked to wear one, or will be asked to leave the room immediately. Students who have additional issues with the mask expectation after a first warning will be referred to the Office of Student Conduct for failure to comply with a directive of University officials.

4 Grading

Although it is designed for undergraduates, this course will introduce advanced (graduate-level) material. We will conduct grading similar to what you may find in a graduate-level course. Final grades will be determined holistically based on your participation and effort given over the course of the semester.

5 Attendance

Because participation is important to your grades in this class, attendance is also important. However, you are adults and we trust you to make choices in your best interest. Below, we provide some policies regarding what you can do if you miss a day of class.

However, in any of these cases, please reach out to the course staff and they will work with you to come to a reasonable solution. Our primary interest in this class is for you to learn and grow as a computer scientist and, potentially, as a researcher.

Additionally, your personal health is more important than anything that will happen in class. Always prioritize your own physical and emotional needs, and we will work with you to the extent possible.

5.1 Reading Days (Presenting)

If you miss a reading day when you are scheduled to present for the class and lead the subsequent discussion, we will need to work something out. Leading a discussion is seen as a critical component of the class, so this will have to be handled on a case-by-case basis.

5.2 Reading Days (Not Presenting)

If you miss a reading day when you are not scheduled to present, we will ask you to read the presented paper on your own and either turn in a (brief) write-up of your thoughts or meet with us in office hours to go over the paper. If you choose the write-up option, we may also provide a short list of questions to guide your response.

5.3 Practice Days

If you miss a practice day, you will still be expected to complete whatever homework was due on that day or assigned on that day. Additionally, you will probably want to watch the recorded lecture or meet with the instructor(s) in office hours to learn the material you missed.

5.4 Midterm

If there is a midterm and you miss it, you will need to work something out with us directly. We will handle these as needed on a case-by-case basis.

5.5 Final Project

The final project must be submitted to pass the class. If something comes up that prohibits you from completing your project in some way, please contact the course staff immediately.

6 Students with Disabilities

Students with disabilities who have been certified by Disability Support Services as needing any type of special accommodations should see the instructor as soon as possible during the schedule adjustment period (the first two weeks of class). Please provide DSS’s letter of accommodation to the instructor at that time.

All arrangements for exam accommodations as a result of disability must be made and arranged with the instructor at least three business days prior to the exam date; later requests (including retroactive ones) will be refused.

7 University of Maryland Policies for Undergraduate Students

Please read the university’s guide on Course Related Policies, which provides you with resources and information relevant to your participation in a UMD course.

8 Academic Integrity

The Campus Senate has adopted a policy asking students to include the following statement on each examination or assignment in every course: "I pledge on my honor that I have not given or received any unauthorized assistance on this examination (or assignment)." Consequently, you will be requested to include this pledge on each exam and assignment. Please also carefully read the Office of Information Technology’s policy regarding acceptable use of computer accounts.

Assignments and projects are to be completed individually, therefore cooperation with others or use of unauthorized materials on assignment or projects is a violation of the University’s Code of Academic Integrity. Both the person receiving assistance and the person providing assistance are in violation of the honor code. Any evidence of this, or of unacceptable use of computer accounts, use of unauthorized materials or cooperation on exams or quizzes, or other possible violations of the Honor Code, will be submitted to the Student Honor Council, which could result in an XF for the course, suspension, or expulsion.

Violations of the Code of Academic Integrity may include, but are not limited to:

If you have any question about a particular situation or source then consult with the instructors in advance. Should you have difficulty with a programming assignment you should see the instructional staff in office hours, and not solicit help from anyone else in violation of these rules.

It is the responsibility, under the honor policy, of anyone who suspects an incident of academic dishonesty has occurred to report it to their instructor, or directly to the Honor Council.

Every semester the department has discovered a number of students attempting to cheat on assignments, in violation of academic integrity requirements. Students’ academic careers have been significantly affected by a decision to cheat. Think about whether you want to join them before contemplating cheating, or before helping a friend to cheat.

You are welcome and encouraged to study and compare or discuss their implementations of the assignment with any others after they are graded, provided that all of the students in question have received nonzero scores for that assignment, and if that assignment will not be extended upon in a later assignment.

9 Right to Change

The CMSC 388X instructional staff reserve the right to change any information presented on this syllabus. Any such changes will be announced to students.

10 Course Materials

The materials for this course have been developed by Pierce Darragh and Justin Frank, under supervision of Leonidas Lampropoulos.

Some of the elements of the course are based on material by: