COMP 524 - Programming Language Concepts

Spring 2013

Syllabus

FB 007 (Brooks Computer Science Building)
MWF 1:00 PM - 1:50 PM
http://www.cs.unc.edu/Courses/comp524-s13/

Instructor

Jeremy Wang
Office: Sitterson 305
Email: jrwang@cs.unc.edu
Office Hours: MW 2:00 PM - 4:00 PM or by appointment

Course Objectives

This course explores key concepts required for understanding programming languages, as well as a general overview of several classes of programming languages.
This course satisfies the Programming Languages Group requirement for the computer science degree and provides a broad overview of programming languages. If you want an in-depth look at implementation issues, then COMP 520 (Compilers) is a more appropriate choice than this course. If you want significant experience working with a particular language, consider COMP 523 (Software Engineering Laboratory) and/or taking another language specific course.

Prerequisites

The official prerequisite for this class is COMP 410 (Data Structures). In addition, several of the assignments will require a significant amount of programming. Proficiency in Java and comfort with coding will be assumed. If you do not have these prerequisites and want to take this course, please contact the instructor immediately.

Textbook

Programming Language Pragmatics, 3rd ed. (Michael L. Scott)
ISBN 978-0-12-374514-9

The textbook can be viewed online from ON CAMPUS here.

Other reading material will be available on the course homepage.

Grading

Assignments: 40%
Quizzes: 10%
Midterm: 20%
Final: 30% (Friday, May 3rd 12:00 - 2:30)

Homework Policy

All homework will be announced in class and posted on the course web page. No late submissions will be accepted without prior approval from the instructor. The lowest homework grade will be dropped when computing your final score.

Honor Code Policy

Plagiarism and any other form of cheating will be reported to the Student Attorney General. Please familiarize yourself with the department's guide Honor Code Observation in Computer Science Courses. Specific guidelines will be given with each assignment.

Calendar

This schedule is subject to change at any time without notice.
DateWeekLessonReadingAssignmentQuiz/test
1/9 (Wed) - 1/11Week 1Intro, Programming LanguagesChapter 1
1/14 - 1/182Compilation and Interpretation1.4, 1.6
(1/21: MLK Day) 1/23 - 1/253Lexical Analysis2.1 - 2.2Due 1/23: Ex. 1.1 - 1.7 (p. 36-37)
1/28 - 2/14Syntax Analysis2.3 - 2.4
2/4 - 2/85Syntax Analysis cont.
2/11 - 2/156Declarative Langauges (Prolog)Chapter 11Due 2/11: Selected Chapter 2 Exercises (see Assignments below)
2/18 - 2/227Binding and Storage, ScopeChapter 3
2/25 - 3/18Control FlowChapter 6
3/4 - 3/89Review and Midterm Due 3/4: HW3 (this is also a Midterm review)3/6: Midterm
(Spring Break 3/11 - 3/15)
3/18 - 3/2210Data Types, Type Systems, PolymorphismChapter 7
3/25 - 3/27 (3/29: Holiday)11Object OrientationChapter 9
4/1 - 4/512Scripting Languages (Python)Chapter 13
4/8 - 4/1213Functional Programming (Haskell)Chapter 10
4/15 - 4/1914Runtime SystemsChapter 15
4/22 - 4/2615ConcurrencyChapter 12
5/3: Final 12:00 - 2:30 PM

Lessons

Week 1: Introduction, Programming Languages
Week 2: Compilation and Interpretation, Lexical Analysis (part 1)
Weeks 3: Lexical Analysis (part 2)
Weeks 4-5: Syntax Analysis
Calculator Scanner/Parser Lab Slides
Week 6: Declarative Languages (Prolog)
Week 7: Binding and Storage, Scope
Week 8: Control Flow
Week 10: Data Types, Type Systems, Polymorphism
Week 11: Object Orientation
Week 12: Scripting Languages (Python)
Week 13: Functional Programming (Haskell)
Week 14: Runtime Systems
Week 15: Concurrency

Assignments

Assignment 1: (due 1/23) Ex. 1.1 - 1.7 (p. 36-37)

Assignment 2: (due 2/11) Selected chapter 2 exercises (p. 102-105)
    2.1 a,b,c (you should use productions, perhaps many compound productions, rather than single-line regular expressions)
    2.2 a,b
    2.4
    2.9
    2.14 a,b,c
    One not exactly in the book (call it 2.xx): Draw a minimal DFA to detect integer and decimal numbers. Your graph should have two final states, one for integers and one for decimal numbers.

Assignment 3 (and Midterm review): HW3