Description

Welcome to the class web page for CSE 3341 in Spring 2020 (the two sections taught by Mike Bond).

See the Syllabus (link above), General Information (below), and the Resources tab for more info about the course.

Course instruction will use a combination of asynchronous (prerecorded lectures) and synchronous class meetings (Zoom sessions during the time slots scheduled by OSU). For synchronous class meetings, feel free to attend either time slot irrespective of the one you're enrolled for.

Class meetings, office hours, and other interactions will be entirely online (via Zoom). See the course calendar for the Zoom link for class meetings and assignment due dates.

General Information

Asking questions and getting help: Piazza and office hours
The best ways to ask questions outside of class are on Piazza and at office hours. Unless your Piazza post needs to be private, make the post *public*, since other students may be interested in the question and answer.

To contact the instructor and/or grader privately, make a private post Piazza or send e-mail (the instructor is slower at responding to e-mail). To set up an appointment outside of office hours, include your available times for at least three forthcoming weekdays.
Course calendar
The official source for class times and office hours is the course Google Calendar (the Zoom link is on Carmen for security reasons). You can use the following links to view or import the course Google Calendar:

View web calendar: https://calendar.google.com/calendar/embed?src=qtifjimj73m1gars1tshctv3ho%40group.calendar.google.com&ctz=America%2FNew_York

Import / subscribe to calendar: https://calendar.google.com/calendar?cid=cXRpZmppbWo3M20xZ2FyczF0c2hjdHYzaG9AZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ

iCal: https://calendar.google.com/calendar/ical/qtifjimj73m1gars1tshctv3ho%40group.calendar.google.com/public/basic.ics

The official source for assignment due dates will be Carmen's Assignments, but the instructor will try to keep them consistent on the course Google Calendar.
Topics and textbook
We'll cover the following topics, mostly in the context of developing an interpreter for the Quandary language:

- Introduction (Chapter 1)
- Formal Languages, Grammars, and Parsing (Chapter 2)
- Imperative Languages (Chapters 6 and 8 in 3rd Edition; Chapters 6 and 9 in 4th Edition)
- Object-Oriented Languages, Types, and Memory Management (Chapters 7 and 9 in 3rd Edition; Chapters 7, 8, and 10 in 4th Edition)
- Concurrency and Parallelism (Chapter 12 in 3rd Edition; Chapter 13 in 4th Edition)
- Functional Languages (Chapter 10 in 3rd Edition; Chapter 11 in 4th Edition)

The chapters are from the the course textbook: Michael Scott's
Programming Language Pragmatics, 3rd or 4th Edition (http://www.cs.rochester.edu/~scott/pragmatics/). Reading the textbook isn't essential, but many students have found it helpful for presenting the material in a different way.

For the lecture slides corresponding to each topic, see the "Resources" tab.

Why students should study PL:
http://web.cse.ohio-state.edu/~rountev.1/6341/pdf/why.pdf
Code
The Quandary reference interpreter, Quandary interpreter skeleton, Quandary examples, and other in-class code examples are here:

https://github.com/mdbond/3341-Public

In case you haven't used git or GitHub before, here's a very brief tutorial:

(1) You can browse the code by visiting the link above.

(2) To get your own copy of the code:

  git clone https://github.com/mdbond/3341-Public.git

(3) To update your copy of 3341-Public with the latest instructor commits:

  git pull
Assignments and grades
You can find descriptions of assignments, submit your solutions, and see your grades on CarmenCanvas: https://osu.instructure.com/courses/83856
A few things to be aware of in advance
Please read "A few things to be aware of in advance" in the syllabus (link near top of Piazza page).

In particular, you must do the projects individually. You may discuss with other people at a high level, but not at the level of developing algorithms or pseudocode together, and you shouldn't develop or share any written or electronic content; any of these activities can lead to similar code. Most importantly, you must never show, share, or send your code to anyone else (nor receive anyone else's) for any reason.

Announcements

Announcements are not public for this course.
Staff Office Hours
NameOffice Hours
Michael Bond
When?
Where?
Xinchen He
When?
Where?
Alexander Chan
When?
Where?
Saikat Majumdar
When?
Where?