CMPSC 461: Programming Language Concepts

Textbook Information

  • Robert W. Sebesta, Concepts of Programming Languages, 12th Edition, Pearson, ISBN- 978-0134997186

Published Remarks

  • None

Hardware Requirements

  • None

Software Requirements

  • None

Proctored Exams

  • There are proctored exams and quizzes.

Course Description

Overview

Students will be exposed to both the syntax and semantics of the languages and learn the central principles in specifying, designing, and implementing programming languages including imperative, functional, object-oriented, logic programming. A survey of popular programming languages, with emphasis on the types of problems for which each language was designed. Examples from different languages will be discussed. This improves their preparation for their profession by extending their programming skill set and experience with a variety of languages

Prerequisite:  SWENG311 or CMPSC221, CMPSC360

Course Goals

This course will cover the following topics:

  • Overview and history of programming languages. Design influences and evaluation of programming languages. Classification of programming languages
  • Language Translation: interpretation, compilation (including scanning, parsing of compilation, syntactic and semantic analysis)
  • Bindings, binding environments, binding times
  • Data: specification, implementation, syntax, persistence, declaration, typing systems, and type checking
  • Scoping concepts: including nested scope, lexical scope and dynamic scope
  • Memory management (the run-time stack and heap). garbage collection
  • Sequence control: within expressions (arithmetic/logical expression evaluation, pattern matching and unification), between expressions (flow of control constructs) and between blocks
  • Object-oriented programming: support for and implementation of abstract data types, encapsulation, inheritance, polymorphism, separate compilation, naming issues, generic programming
  • Functional programming: overview and motivation, recursion over lists, natural numbers, trees, and other recursively-defined data
  • Logic programming language: Prolog

Outcomes

Upon completion of the course, students should possess the following skills:

  • Give an overview of programming languages, recognize the history, the design influences and evaluation of programming languages
  • Explain how programming languages differ, how they are similar and classified
  • Analyze code for correctness, understand basic language translation: interpretation, compilation (including scanning, parsing of compilation, syntactic and semantic analysis)
  • Describe in detail the design issues for the primary constructs of programming languages in data specification, implementation, typing systems, and type checking; scoping concepts: including nested scope, lexical scope and dynamic scope; memory management: the run-time stack and heap, and garbage collection
  • Explain expressions, assignment statements, control statements, and subprogram, co-routines, parameter transmission, and their implementation
  • Examine data abstraction facilities, provide an in-depth discussion of language features that support object-oriented programming (inheritance and dynamic method binding)
  • Develop software in various language paradigms such as imperative, functional, object-oriented, and logic languages

What We Expect of You

On average, most students spend eight to ten hours per week working on course assignments for a three credit course in a traditional regular fifteen-week semester taught in classroom. So you may have to put more hours for an online class. Your workload may be more or less depending of the topics that we will cover in a given week. We have worked hard to make this the most effective and convenient educational experience possible. The Internet may still be a novel learning environment for you, but in one sense it is no different than a traditional college class: how much and how well you learn is ultimately up to you. You will succeed if you are diligent about keeping up with the class schedule, and if you take advantage of opportunities to communicate with me, as well as with your fellow students. Specific learning objectives for each module are detailed within each module. The class schedule can be found by clicking the link above labeled ‘course Schedule’. Online lecture stream videos and lecture notes: They will provide you with key concepts and methods needed for some chapters, however they are not alternative to reading the textbook.

This course supports the following ABET outcome:

ABET Students Outcomes associated with this course for CS students 1) Analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions. 2) Design, implement, and evaluate a computing-based solution to meet a given set of computing requirements in the context of the program’s discipline.

 ABET Students Outcomes associated with this course for SE students

1) an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics

6) an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics.

General Guidelines for Assignments and Grading:

1. Grading Policy

Grading is based on midterm exams, reading assignments, quizzes, activities, and homework assignments. The following weights are assigned to the different assessed components of the course:

Category Evaluation Percentage
Exam 1 Individual 15%
Exam 2 Individual 15%
Quizzes Individual 10%
Homework Assignments (4 HWs) Teams 20%
Activities/Participation Teams 15%
Final Exam individual 25%

Students must bring grading issues to the attention of the instructor by discussing the scoring within one week of receipt of the graded work.  PLEASE CHECK THE SCHEDULE FOR ANY UPDATE.

2. Grade Assignments

Assessments are based on 100 points with final letter grades being assigned as follows:

>= 94% A
>= 90% A-
>= 87% B+
>= 84% B
>= 80% B-
>= 77% C+
>= 70% C
>= 60% D
>= 0% F

Grade Review Process If you ask the professor to review your grade, the process will be as follows: write a short letter delineating why you think you have been reviewed severely. It is maybe conceivable that I neglected to consider the proof supporting your theory legitimately, or that I misjudged the idea of your case. Your case will be reinforced by invalidating the remarks I made and including them into your claim. If your appeal merits a further examination, I will be happy to do so. Note that: I am regularly too generous as opposed to excessively stingy. In this case, it is conceivable that when I reconsider your assignment your grade may be brought down. Activities/Participation: On average, each module will have an activity. The activity assignment is giving to enforce the comprehension of the materials. Late activities up to 12 hours are accepted with 20% penalty. No activity is accepted after 12 hours. Activities are group work. The instructor will assign you in a group at the beginning of the semester. Please check under “People” to check who is on your team. Homework: You will have four homework. Late homework up to 12 hours are accepted with 20% penalty. No homework is accepted after 12 hours. Homework are group work (the same group as in the activities) Make sure you check each assignment due date so you don’t miss any. Assignments are only graded if submitted on Canvas by its due date. Exams and QuizzesThese will be timed exams and quizzes that are taken on specific dates. You need to plan on taking the exams/quizzes on the time and dates specified on the schedule. Online exams/quizzes are open book. You do not have to come to campus to take the exam. You can’t make up exams/quizzes. A zero will be awarded for the missed ones. Access to the online exam/quiz is through Canvas. You have one week to take the quizzes but only 24 hours window for the exams. Please plan accordingly. Exams and quizzes are individual work.  Makeup exams/quizzes will be given only in extraordinary circumstances, which needs proof of documentation, such as an event of an illness, or emergency, but the instructor must be notified before the exam or quiz.  It is the student’s responsibility to inform the instructor prior to the exam or quiz. NOT AFTER. The final decision to allow or deny a makeup exam/quiz is the instructor’s. Course Policies Late Add Policy Any student who registers late to the class will not be given the opportunity to make up missed assignments. A grade of 0 will be given for each assignment that was missed.