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.
- Describe major programming paradigms such as imperative, functional, and logic programming and choose the appropriate type for a particular project.
- Demonstrate an understanding of different language paradigms and types by implementing simple programs in each.
- Describe binding, memory management, and control flow techniques for various languages.
- Identify the difference between compiling and interpretation and the pros and cons of each.
- Explain concepts of syntax and parsing.
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
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.
| Date | Week | Lesson | Reading | Assignment | Quiz/test |
| 1/9 (Wed) - 1/11 | Week 1 | Intro, Programming Languages | Chapter 1 | | |
| 1/14 - 1/18 | 2 | Compilation and Interpretation | 1.4, 1.6 | | |
| (1/21: MLK Day) 1/23 - 1/25 | 3 | Lexical Analysis | 2.1 - 2.2 | Due 1/23: Ex. 1.1 - 1.7 (p. 36-37) | |
| 1/28 - 2/1 | 4 | Syntax Analysis | 2.3 - 2.4 | | |
| 2/4 - 2/8 | 5 | Syntax Analysis cont. | | | |
| 2/11 - 2/15 | 6 | Declarative Langauges (Prolog) | Chapter 11 | Due 2/11: Selected Chapter 2 Exercises (see Assignments below) | |
| 2/18 - 2/22 | 7 | Binding and Storage, Scope | Chapter 3 | | |
| 2/25 - 3/1 | 8 | Control Flow | Chapter 6 | | |
| 3/4 - 3/8 | 9 | Review and Midterm | | Due 3/4: HW3 (this is also a Midterm review) | 3/6: Midterm |
| (Spring Break 3/11 - 3/15) | | | | | |
| 3/18 - 3/22 | 10 | Data Types, Type Systems, Polymorphism | Chapter 7 | | |
| 3/25 - 3/27 (3/29: Holiday) | 11 | Object Orientation | Chapter 9 | | |
| 4/1 - 4/5 | 12 | Scripting Languages (Python) | Chapter 13 | | |
| 4/8 - 4/12 | 13 | Functional Programming (Haskell) | Chapter 10 | | |
| 4/15 - 4/19 | 14 | Runtime Systems | Chapter 15 | | |
| 4/22 - 4/26 | 15 | Concurrency | Chapter 12 | | |
| | | | | 5/3: Final 12:00 - 2:30 PM |
Lessons
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