Course Syllabus
Some links in this syllabus page may only be accessible to currently enrolled students.
Course Introduction
This course is an examination of the constructs of programming languages, the four major programming paradigms, and several programming languages, including their application and underlying execution models. The paradigms examined in this course include imperative, object-oriented, functional, and logical. Students will gain exposure to and experience in a variety of languages, including Raku, Ruby, Racket, and Prolog. Other languages will be discussed in context in the explorations.
Download Syllabus
Course Content
- Language and regular expressions
- Imperative programming and history
- Grammars, derivations, and parse trees
- Abstract and concrete syntax
- Operational, denotational, and axiomatic semantics
- Variable naming and scope
- Static and dynamic type systems
- Expressions, assignment, selection, and iteration
- Parameter passing schemes
- Functional programming
- Logic programming
- Special topics
- Garbage collection
- Concurrency
- Exception handling
- Event handling
Learning Outcomes
ABET Evaluated CLOs:
- Produce an abstract syntax for a language given its concrete syntax.
Additional CLOs:
- Create functional programs using algebraic data types and recursive functions.
- Produce and explain the type and result of an expression in the context of functional programming.
- Create a denotational semantics for a language given its abstract syntax and an informal specification of its behavior.
- Produce and explain the behavior of a program under static vs. dynamic typing, and discuss the benefits and drawbacks of each approach.
- Produce and explain a program's output under different parameter passing schemes, such as call-by-value vs. call-by-name vs. call-by-need.
- Produce and explain a program's output under static vs. dynamic scoping of names.
- Create logic programs and express queries using predicates.
Recommended Textbook
The following textbook is strongly recommended for students to explore the topics in more depth and to see more examples.
Concepts of Programming Languages by Robert W. Sebesta
The most recent 12th edition is expensive and only available from the publisher as an electronic text. However it is available as an electronic rental for about $25. For those seeking print editions, it is recommended that students find an older, used edition. Any of the following versions will suffice.
- 12th edition, 2019 (eText)
- Global edition, 2016
- 11th edition, 2015
- 10th edition, 2012
Course Structure
| Module | Topic | Explorations | Chapter | Lab | Homework | Quiz |
|---|---|---|---|---|---|---|
| 1 | Language | Formal language; regexs; imperative programming | 1, 2 | Hw1 | Q1 | |
| 2 | History | History of languages; Raku language | 2 | Lab 1 | Hw2 | Q2 |
| 3 | Grammar | Backus-Naur form; parse trees; precedence; ambiguity | 3 | Hw3 | Q3 | |
| 4 | Syntax & Semantics | Syntax; semantics; variables; scope | 3, 5 | Lab 2 | Hw4 | Q4 |
| 5 | Types | Types; type systems; OOP; Ruby language | 6,11,12 | Hw5 | Q5 | |
| 6 | Statements | Expressions; assignment; selection; iteration | 7, 8 | Lab 3 | Hw6 | Q6 |
| 7 | Functions | Functions; function passing; call & return | 9, 10 | Hw7 | Q7 | |
| 8 | Functional Programming | Lambda calculus, functional languages; Racket language | 15 | Lab 4 | Hw8 | Q8 |
| 9 | Logic Programming | Predicate calculus; logic programming; Prolog language | 16 | Hw9 | Q9 | |
| 10 | Special Topics | Garbage collection; concurrency; exception handling | 13, 14 | Lab 5 | Hw10 | Q10 |
Course Structure
This section describes the structure of the course including an overview of the graded components.
Homeworks
The homeworks are practice problems worth 30% of the total grade. There is a homework assignment associated with each module. These ten homeworks are given as Canvas quizzes. The homeworks serve as drills, intended to review and solidify the course content while preparing students for the end of module quiz. Each homework contains 10 questions. The types of questions include true/false, multiple choice, multiple answer, numeric answer, ordering, and matching.
You are permitted three attempts on each homework assignment. Your highest score achieved will be retained. The questions change between attempts. Students are encouraged to use all three attempts to practice with the course topics. There is no time limit for homeworks.
Programming Labs
There are five programming assignments, worth 40% of the total grade. For each programming assignment you are given a series of tests. Assessment of your programming assignment is based on your intelligent code formatting, informative code comments, and the number of tests you pass. Rubrics for the programming labs will be provided by the instructor in Canvas.
You are expected to use the Internet to seek out tutorials, documentation, and examples in order to learn these languages. There will be a lab exploring regular expressions (Raku) as well as a lab for each programming paradigm: imperative (Raku), object-oriented (Ruby), functional (Racket), and logical (Prolog).
Failure to submit two or more labs may result in an automatic failure of the course.
Module Quizzes
The module quizzes are assessments worth 30% of the total grade. There is a quiz at the conclusion of each module. These ten quizzes are given as Canvas quizzes. Each quiz contains 10 questions. The types of questions include true/false, multiple choice, multiple answer, numeric answer, ordering, and matching.
You are permitted two attempts on each module quiz. Your highest score achieved will be retained. The questions change between attempts. Students are encouraged to use both attempts. Quizzes are not proctored. There is a 20 minute time limit for each module quiz attempt.
Exams
There are no exams in this course.
Grades
| Homeworks | 30% |
|---|---|
| Module Quizzes | 30% |
| Programming Labs | 40% |
| [93, 100] | A | [80, 83) | B- | [67, 70) | D+ | ||
| [90, 93) | A- | [77, 80) | C+ | [63, 67) | D | ||
| [87, 90) | B+ | [73, 77) | C | [60, 63) | D- | ||
| [83 - 87) | B | [70, 73) | C- | [0, 60) | F |
Late Work Policy
Students are expected to submit their work by the given deadline. All assignment and quiz deadlines are provided in the Canvas calendar. Late work is accepted with 20% per day penalty that is automatically applied by Canvas. Students are encouraged to submit their work late rather than take a zero for any assignment or quiz.
Course Policies
This section details the university policies pertaining to this course.
Academic Integrity
For this class, it is encouraged for students to discuss course content with each other, even including general discussion of homework and programming assignments and how to fix specific issues. However, each person must develop her or his own individual solutions. In particular, a student may not copy (by any means) another's work (or portions of it) and represent it as her/his own. Plagiarism can result in drastic consequences for both the person who copied and the person who allowed them to copy. The normal penalty is a zero for the assignment and having the incident go on your official record. If you make your code available to others (for example in a public GitHub repository) and someone else copies it, both parties will be held responsible.
Student Conduct Code
This program strives to prepare students for careers in computer science, which includes preparing students to communicate professionally. Therefore, students in this class are expected to communicate in a professional manner in discussion forums, email messages and all communications for this course. Critiques, disagreements, problems, or other topics of a sensitive nature can be addressed, but should be addressed civilly and professionally. If a student's communications become unprofessional, disruptive, abusive, inflammatory, or if they otherwise obstruct the learning process of the class, the instructor may restrict the student from participating in the electronic forums associated with the class and notify Ecampus and the OSU Office of Student Conduct and Community Standards. Productive learning communities and workplaces depend on civil, professional discourse. It is our hope that this policy strengthens your learning community and prepares you for the professional workplace.
Students with Disabilities
Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but
have not obtained approval please contact DAS immediately at 541-737-4098 or at http://ds.oregonstate.edu. DAS notifies students and faculty members of approved academic
accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the
implementation of individual accommodations.
Student Conduct Code
This program strives to prepare students for careers in computer science, which includes preparing students to communicate professionally. Therefore, students in this class are
expected to communicate in a professional manner in discussion forums, email messages and all communications for this course. Critiques, disagreements, problems, or other topics of a sensitive nature can be addressed, but should be addressed civilly and professionally. If a student's communications become unprofessional, disruptive, abusive, inflammatory, or if they otherwise obstruct the learning process of the class, the instructor may restrict the student from participating in the electronic forums associated with the class and notify Ecampus and the OSU Office of Student Conduct and Community Standards. Productive learning communities and workplaces depend on civil, professional discourse. It is our hope that this policy strengthens your learning community and prepares you for the professional workplace.
Online Privacy
Posts to Canvas or Teams discussions are public messages, and all such posts will be viewable by the entire class. If you prefer that only the instructor sees your communication, use a private message or email. Posting of personal contact information is strictly at your own risk.
Technical Assistance
If you experience any errors or problems while in your online course, contact 24-7 Canvas Support through the Help link within Canvas. If you experience computer difficulties, need help downloading a browser or plug-in, or need assistance logging into a course, contact the IS Service Desk for assistance. You can call 541-737-8787 or visit the IS Service Desk online.
Where to Go For Help
Patrick Donnelly (instructor): donnellp@oregonstate.edu
TA assignments and contact information are provided in an announcement at the beginning of the term.
Resources to Get Help
Getting Help
When you have a question about something, the order of steps you should take to pursue answers is roughly the following:
- Review the relevant materials (assignment description, readings, lectures).
- Search the class discussion board on Ed Discussion (it can take some practice to learn how to refine your searches well) to see if your question has been answered already.
- Post to the class discussion board on Ed Discussion (by doing #1 and #2 first, you might save yourself asking a question, and you might also then be better able to help others). When you post a question on Ed Discussion and it's answered there, that benefits other people who have the same question (if you're shy, you can post anonymously).
- If you've tried #1-3 and feel like your question hasn't been fully addressed, please email your assigned TA or myself. Or attend the TA's office hours on Zoom.
- For questions about assignment grading, first ask your TA. If that doesn’t resolve the issue, then ask me.
- For questions relating to course policies or administration, email your instructor directly.
You are allowed to post small snippets of non-working code, as discussed in the section on Academic Integrity. That also applies to answering other students’ questions - please use pseudocode or give hints so the student will have the satisfaction (and learning reinforcement) of figuring out the solution for themselves. When you are willing to help others on the discussion board and take pains to not make anyone feel like they asked a dumb question, you are reinforcing both your technical knowledge and your people skills, both of which are highly valued not just here, but out in the real world.
Technical Assistance
If you experience any errors or problems while in your online course, contact 24-7 Canvas Support through the Help link within Canvas. If you experience computer difficulties, need help downloading a browser or plug-in, or need assistance logging into a course, contact the IS Service Desk for assistance. You can call 541-737-8787 or visit the IS Service Desk online.
Reach Out for Success
University students encounter setbacks from time to time. If you encounter difficulties and need assistance, it’s important to reach out. Consider discussing the situation with an instructor or academic advisor. Learn about resources that assist with wellness and academic success at oregonstate.edu/ReachOut. If you are in immediate crisis, please contact the Crisis Text Line by texting OREGON to 741-741 or call the National Suicide Prevention Lifeline at 1-800-273-TALK (8255).
Tools
This is a list of the tools and programming languages used in this course.
Canvas
Canvas is the LMS (Learning Management System) that you are using right now to view this course. For questions about Canvas, check this list of help topics (Links to an external site.) .
Ed Discussions
There is a link to Ed Discussions in the left sidebar of Canvas. This is the replacement for Piazza. This ongoing Q&A forum is a valuable resource for getting official answers to your questions (and often helpful student responses also). It's good to use the search box before posting, to see if your question has already been addressed.
Teams
Microsoft Teams is a forum for more informal interaction with your fellow students. It is also where TAs and I will hold office hours.
Here's how we'll use the Teams:
- #announcements
The landing channel when you first join. We will use this for announcements specific to Slack. - #random
Random chat among course members (students and teachers) - #general (You will have to join this channel manually to really get anything out of Slack)
Class-specific discussions, office hours, etc.
On Teams you can:
- Engage with the TAs and Instructor during office hours
- Engage with each other
OSU's primary motivation in providing this Teams experience is to give you, the student, a built-in mechanism for building relationships and collaborations among yourselves.
Gradescope
At the bottom of each programming assignment page is a link to Gradescope, which will open in a new tab. On Gradescope you'll be able to click a link to submit your project.
Repl.it
Repl.it is the tool that was used to create the interactive code exercises in the lessons. The exercises are embedded in the lesson pages in Canvas, but you will need to be logged into Repl.it in order to view them. You'll receive an invitation to join the Repl.it "classroom" around the first day of class
H5P
H5P is the tool that was used to create the interactive Self-Check exercises in the lessons. These exercises are embedded in the lesson pages in Canvas. There are three Self-Check exercises in each in exploration.
Programming Languages
You will need to download and install the following program languages to complete the programming assignments. Each assignment will provide you the link to download the language required. The complete list is given here.
Course Summary:
| Date | Details | Due |
|---|---|---|