Prerequisites: C- or better in CMSC216 and CMSC250
Credits: 1
Time and Location: Fridays, 11:00am -- 11:50am ONLINE (section 0101)
Note: all times in this document are in the America/New_York timezone.
Instructor: Dr. David Van Horn
Course Facilitators: Clifford Bakalian, Justin Goodman
Course Description:
A Tour of Programming Languages introduces students to various programming paradigms and languages.
This course aims to help students further their understanding of programming language (PL) design, as well as gain experience with different programming philosophies, paradigms, and mindsets.
This course will be run asynchronously. The course instructors will provide weekly lecture videos and accompanying notes. Students are expected to keep up-to-date with course material.
Student Goals:
- To gain experience in programming language paradigms and design
- To gain a more expansive picture of programming languages, and understand how languages express meaning
- To understand how different programming languages can be used to accomplish the same task
- To mimic features of a programming language in another
Office Hours:
Both facilitators will be available in a joint Zoom call during Friday's class time.
Both facilitators will also have one hour each of Zoom office hours per week.
Timings may be dynamic, and will be updated regularly on the Canvas course page.
We will utilize a handful of services for this course:
Service | Purpose | link |
---|---|---|
Canvas | announcements, grades | https://umd.instructure.com/courses/1302555 |
Panopto | lecture videos | https://umd.instructure.com/courses/1302555/external_tools/28827 |
GitHub | syllabus, notes, assignments, exams | https://github.com/plstic/cmsc389b-spring21 |
Gradescope | submission of completed work | https://www.gradescope.com/courses/237145/ |
Piazza | piazza | https://umd.instructure.com/courses/1302555/external_tools/42711 |
Additionally, we are endorsing Docker and VSCode for this course. We strongly recommend that you use both (industry-standard) applications to complete your assignments. We intend to offer written and video tutorials for both git and Docker.
Week | Topic (link to notes) | Language (link to project) | Etc (links to quiz/exam sample) |
---|---|---|---|
01-29 | Introduction/Syllabus | -- | |
02-05 | Procedural Languages | COBOL | |
02-12 | REPL/Scripting | Lua | |
02-19 | Logic languages | Prolog | |
02-26 | Stack-based languages | Forth | |
03-05 | Array programming | J | |
03-12 | Security | Rust | |
break | Oddities | MSFT PowerPoint (no proj.) | |
03-26 | Concurrent languages | Go (no proj.) | exam 1 assigned |
04-02 | Meta languages | Racket | exam 1 due |
04-09 | Parsing Languages | flex/bison | |
04-16 | Declarative languages | SQLite | |
04-23 | Esoteric languages | INTERCAL | |
04-30 | Reflective programming | Befunge | |
05-07 | Applications | -- | exam 2 assigned |
final | Conclusion | -- | exam 2 due |
- Assignments (66%) -- 6 programming assignments
- Exams (34%) -- 2 take-home exams
- Quizzes/Surveys -- extra credit opportunities
We offer projects for (almost) every language, however you are only required to do 1 project roughly every two weeks. That is, we will offer 2 projects every two weeks, and you choose to do one of them. Projects are grouped into the following:
- Group 1
- COBOL
- Lua
- Group 2
- Prolog
- Forth
- Group 3
- J
- Rust
- Group 4
- Racket
- Flex/Bison
- Group 5
- SQlite
- Group 6
- INTERCAL
- Befunge
As you can see, for each group, you get to choose between two projects (with the exception of group 5: SQlite).
We encourage discussion with classmates about the projects, however sharing code is strictly prohibited. You may discuss strategies and approaches, but submission of shared code is considered cheating and a violation of academic integrity.
Projects must be submitted electronically following the instructions given in class. Projects may not be submitted by any other means (e.g., please do not email your projects to us). It is your responsibility to test your code and verify that it works properly before submitting. All projects are due at 11:59pm on the day indicated on the project assignment, according to the Gradescope server's internal clock.
Project extensions will not be granted due to system problems, network problems, power outages, etc.. Do not wait to submit a project until the night it is due. You may submit multiple times up to the deadline -- only your highest-scored on-time submission is considered for your final grade.
No consideration in grading will be made for errors made in transferring files or submitting the wrong version of your project. Having a working, unsubmitted version will not count; only submitted code will be counted.
Your projects will be graded using test cases not provided in advance. Because grading is done automatically, you must follow the project specification exactly. Some projects may have associated style guidelines for grading. We reserve the right to manually grade program source code for some projects.
Finally, any "hard coding" in a programming assignment may result in a score of zero for that project, and is considered a bad-faith attempt. Hard coding refers to attempting to make a program appear as if it works correctly, when in fact it does not. One example of hard coding would be printing the desired output instead of computing it. This is only one example, and if you have any questions as to what constitutes hard coding, be sure to ask ahead of time.
You are not allowed to share or publicly post your project solutions online or in-person. Doing so constitutes a violation of academic integrity, and will be handled accordingly.
You have two non-transferable and non-refundable, 24-hour extension tokens which you can use at any point for any assignment. This does NOT include exams.
There will be two exams for this course -- one around the semester halfway point, and one at the end of the semester. Both will be take-home exams featuring a variety of questions, including coding problems more difficult than the weekly assignments. Students will have one week to complete each exam. Exams are to be done independently. Exams will be submitted to Gradescope, and you may submit as many times as you want. We will discuss exams further closer to the first exam.
Right to Change Information
Although every effort has been made to be complete and accurate, unforeseen circumstances arising during the semester could require the adjustment of any material given here. Consequently, given due notice to students, the instructors reserve the right to change any information on this syllabus or in other course materials.
Excused Absence and Academic Accommodations: Read our policy below but for general reference See the section titled Attendance, Absences, or Missed Assignments available at Course Related Policies.
Disability Support Accommodations: See the section titled Accessibility available at Course Related Policies.
Academic Integrity:
We will allow you to with another person on these projects.
That does not mean however, that you may submit the same solution for them.
Rather, we encourage you to discuss and talk to your classmates on how to tackle
the assignments. You will find that multiple solutions exist for many if not all
the projects we give you. Discuss strategies and approaches, but sharing code is
strictly prohibited.
Note that academic dishonesty includes not only cheating, fabrication, and
plagiarism, but also includes helping other students commit acts of academic
dishonesty by allowing them to obtain copies of your work.
In short, all submitted work must be your own.
Cases of academic dishonesty will be pursued to
the fullest extent possible as stipulated by the Office of Student Conduct.
It is very important for you to be aware of the consequences of cheating,
fabrication, facilitation, and plagiarism. For more information on the Code of
Academic Integrity or the Student Honor Council, please visit
http://www.shc.umd.edu.
All individual assignments/quizzes must be done individually. Please visit the PDF of the UMD Code of Academic Integrity for a detailed explanation of what constitutes academic dishonesty. Note that it includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own.
Cases of academic dishonesty will be referred to the University's Office of Judicial Programs. If the student is found to be responsible of academic dishonesty, the typical sanction results in a special grade "XF", indicating that the course was failed due to academic dishonesty. More serious instances can result in expulsion from the university. If you have any doubt as to whether an act of yours might constitute academic dishonesty, please contact your one of the course instructors or facilitators.
Excused Absence and Academic Accommodations:
Missing an exam for reasons such as illness, religious observance, participation in required university activities, or family or personal emergency (such as a serious automobile accident or close relative's funeral) will be excused so long as the absence is requested in writing at least 2 days in advance and the student includes documentation that shows the absence qualifies as excused; a self-signed note is not sufficient as exams are Major Scheduled Grading Events.
Each note must contain an acknowledgment by the student that the information provided is true and correct. Providing false information to University staff is prohibited under Part 10(e) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and may result in disciplinary action. The student is responsible for following up with the instructors and/or the course facilitators to make sure they have all information missed from that day.
For medical absences, you must furnish documentation from the health care professional who treated you. This documentation must verify dates of treatment and indicate the time frame that the student was unable to meet academic responsibilities. In addition, it must contain the name and phone number of the medical service provider to be used if verification is needed. No diagnostic information will ever be requested. Note that simply being seen by a health care professional does not constitute an excused absence; it must be clear that you were unable to perform your academic duties.
It is the University’s policy to provide accommodations for students with religious observances conflicting with exams, but it is the your responsibility to inform the instructors in advance of intended religious observances. If you have a conflict with one of the planned exams, you must inform the instructors prior to the end of the first two weeks of the class.
For missed exams due to excused absences, the instructors will arrange a makeup exam. If you might miss an exam for any other reason other than those above, you must contact the instructors in advance to discuss the circumstances. We are not obligated to offer a substitute assignment or to provide a makeup exam unless the failure to perform was due to an excused absence.
You have two non-transferable and non-refundable, 24-hour extension tokens which you can use at any point for any assignment. This does NOT include exams.
Projects will be assigned with sufficient time to be completed by students who have a reasonable understanding of the necessary material and begin promptly. In cases of extremely serious documented illness of lengthy duration or other protracted, severe emergency situations, the instructors may consider extensions on project assignments, depending upon the specific circumstances.
The Major Scheduled Grading Events for this course include all weekly assignments and both exams.
At the time the instructors or facilitators are informed about an excused project deadline, arrangements can be made regarding it in terms of an appropriate extension to the deadline.
It is also the student's responsibility to inform the instructors or facilitators of any intended absences from exams or class for religious observances or official University events during the first two weeks of the semester.
Disability Support Services:
Any student eligible for and requesting reasonable academic accommodations due
to a disability is requested to provide, to the instructors or facilitators in
office hours, a letter of accommodation from the Office of Disability Support
Services within the first two weeks of the semester. Arrangements for individual
exams must be made with the instructors or facilitators at least one week in
advance.
University Policies:
There are general course related policies at the University with which you might
want to become familiar. These are available here:
https://www.ugst.umd.edu/courserelatedpolicies.html.
Course Evaluations:
If you have a suggestion for improving this class, don't hesitate to tell the
instructors or course facilitators during the semester. The Department of
Computer Science takes the student course evaluations very seriously.
Evaluations for the Fall will usually be open during the first two weeks of
December. At that time, students can go to https://www.CourseEvalUM.umd.edu to
complete their evaluations. Your comments will help make this class better.