DEPARTMENT OF COMPUTER ENGINEERING
Course Code: CmpE 218
Course Title: Programming Language Design
Course Credit: (4 , 1) 4
Semester: 2006 - 2007 Spring
Course Website: http://cmpe.emu.edu.tr/cmpe218/
Course Mailing List: cmpe218@students.emu.edu.tr
- Please activate your EMU e-mail account, and
- Read my welcome remarks.
- Please consider this Guide on Netiquette: TXT or HTML versions.
Faculty:
| Group #1 | Group #2 | Group #3 | Group #4 | |
| Faculty Member: | Atilla ELÇİ
(Course Coord.) |
Manuel CARCENAC | Konstantin DEGTIAREV | |
| Office No. & Telph.: | 208 & 2843 | 107 & 1195 | 108 & 1191 | |
| E-mail: | atilla.elci | manuel.carcenac | konstantin.degtiarev | |
| Website: | ./aelci/ | ./carcenac/ | ./degtiarev/komfa.htm/ | |
| Lab Coordinator: | Kiavash BAHREINI | Kiavash BAHREINI | Kiavash BAHREINI | Kiavash BAHREINI |
| Office No. & Telph.: | 119 & 2833 | 119 & 2833 | 119 & 2833 | 119 & 2833 |
| E-mail: | kiavash.bahreini | kiavash.bahreini | kiavash.bahreini | kiavash.bahreini |
| Lab Group Assistant: | Kiavash BAHREINI | Kiavash BAHREINI | Kiavash BAHREINI | Huseyin SERTBAY |
| Office No. & Telph.: | 119 & 2833 | 119 & 2833 | 119 & 2833 | |
| E-mail: | kiavash.bahreini | kiavash.bahreini | kiavash.bahreini | |
| Lab Assistant: | Muhammad R. FATEMI | Muhammad R. FATEMI | Huseyin SERTBAY | Muhammed A. SHAH |
| Office No. & Telph.: | Maher WAHEEB | Zafer ERENEL | Maher WAHEEB | Maher WAHEEB |
| E-mail: | ||||
| Labs at CmpE ??? | CmpE 238 & 239 | CmpE 137 | CmpE 137 | CmpE 238 |
| Labs timing | Wedn 2:30-4:20 | Tue 8:30-10:20 | Fri 2:30-4:20 | Fri 8:30-10:20 |
| E-Mail Homeworks to |
Textbook:
SEBESTA, Robert W.: Concepts of Programming Languages, 7th Edition, Pearson Intl (Addison-Wesley), 2006. ISBN: 0-321-312511.
Textbook Supplements for students including a language reference library and self-assessment quizzes (need to register first using the “student access code” available at the scratch area on the insert to the book). PowerPoint slides and figures of the book may be downloaded from this link.
Additionally, check the official course Website for handouts, announcements, and other resources.
SEBESTA, Robert W.: Concepts of Programming Languages, 6th Edition, Addison-Wesley, 2004. ISBN: 0-321-19362-8.
Textbook Supplements for students including a language reference library and self-assessment quizzes (need to register first using the “student access code” available at the scratch area on the insert to the book).
Answers to selected end-of-chapter problems.
Other References (many are available at the EMU Bookstore and Library):
1. Flanagan, David: Java in a Nutshell - 4th Edition, O'Reilly, 2003. ISBN: 0596002831.
2. Callear, David: Prolog Programming for Students, DP Publications, 1994, ISBN: 1-85805-93-6.
3. Previous textbook: Tucker, Allen and Robert Noonan: Programming Languages, Principles and Paradigms, McGraw-Hill, 2002, ISBN: 0-07-112280-X (ISE). Textbook Website: check available Student Resources such as PowerPoint slides, source code, animations and further links.
4. Pratt, Terrence W. and Marvin V. Zelkowitz: Programming Languages, Design and Implementation, 4th Edition, 2001, ISBN: 0-13-027678-2.
5. Appleby, Doris and Julius J. VandeKoople: Programming Languages, Paradigm and Practice, 2nd Ed., McGraw-Hill, 1997, ISBN: 0-07-005315-4.
6. Rayward-Smith, V. J.: A First Course in Formal Language Theory, McGraw-Hill, 1995. ISBN: 0-07-709245-7.
7. Fischer, Alice E. and Francis S. Gradzinsky: The Anatomy of Programming Languages, Prentice-Hall Intl., 1993, ISBN: 0-13-042219-3.
Many books on programming and languages are available also as e-book in the ACM Books; access is free to ACM student members. ACM membership is $18/year for EMU students. Check my note on ACM membership. There are many free-to-members ACM Books and ACM Courses over the Web on C/C++, Scripting languages, C#, Java, Perl, Visual Studio .NET, and .NET Framework. Check TOP TEN courses of the last month.
Try Wikibooks for books on try the Programming Languages, Computer Science, or other programming and language topics, such as, Domain-Specific Languages, logic programming, ... bookshelves.
Similarly, you may have access to relevant e-books sources such as EBRARY, SAFARI, etc as they become available from time to time through EMU Library online databases.
This course presents the general principles and paradigms underlying most of the currently used programming languages: syntax, semantics and translation, imperative programming, the associated management of the memory, object oriented, logic, declarative, and functional programming. These paradigms will be studied and compared among them through representative languages.
Participant of the course will be required to carry out practical work in terms of home works, labs and short projects.
Structures of programming languages; formal specifications of syntax, semantics and translation; data structures, control, subprograms, storage management concepts and techniques employed in major languages. Study and evaluation of key features of major programming languages. (Prerequisite: CmpE 212 OO & C++)
1) Why study programming languages (PLs)?
2) Evolution of PLs (self study)
3) PL syntax and semantics
4) Lexical and syntax analysis
5) Names and scopes
6) Data types
7) Expression evaluation
8) Control structures
9) Subprograms and implementation
10) Abstract data types
11) Logic programming- Prolog
12) Object-oriented language support
Schedule is here: Semester Plan of Schedule and Material.
All lecture presentations are attached to the schedule; just click on the chapter number.
Practice on several programming paradigms will be carried out using specific languages including the following:
1) C / C++
2) C# / Java
3) Prolog
Please take note of the Guidelines for Proper Conduct with respect to HWs, quizzes, and labs. Also consider this recent presentation on Professional Ethics and Plagiarism.
v Midterm Exam 1: 25
v Midterm Exam 2: 25
v Labs + homeworks: 15
v Attendance 05 ← Bonus
v Final Exam: 35
Ø TOTAL: 100 %
Office Hours:
For A. ELCI: 14:40 – 15:30 on Tuesdays & Thursdays
Other faculty: Please check their home pages.
Attendance: Absolutely required; any student with poor attendance record will be given NG.
Five roll calls will be taken of which each is worth one bonus point.
Missed Exams: A student missing an exam should provide a substantiated and valid excuse within three days following the exam. Only for them one make-up exam will be administered at the end of the semester following the final exam period.
An e-book on comparative study of programming languages:
* Very much the same content as our coverage of the subject.
* To download the e-book onto your PC, click here (193 KB).
* Double click on index.htm in the plbook directory after downloading and expanding.
A concise history of OO languages by Ole-Johan Dahl and Kristen Nygaard.
A successor to C? Check out D Language from its creator.
Articles on OO programming, .NET, and C# in Nedir.Com's ASPnedir.com site. (Turkish)
Java resources:
Online Java tutorial @Sun.
Download the Java Tutorial form Sun.
Sun's free IDE Sun Java Studio Enterprise.
A lengthy account of early history of Java- superlative review of business life: The Java Saga by David Bank, Wired Magazine, issue 3.12, Dec. 1995.
An older e-book on Java: Java By Example by Clayton Walnum, Copyright© 1996 by Que® Corporation.
Pascal definition by railroad diagrams.
ACM Queue interview: A Conversation with Alan Kay: Big talk with the creator of Smalltalk and much more.
P. Hudak, J. Peterson, J.H. Fasel. "A Gentle Introduction to Haskell".
Free e-books on Internet & Web at The e-Book Directory.
Books in Turkish:
Kid's Programming Language (KPL) at Microsoft site; free development platform (IDE, tutorial and user's guide).
KAREL & KAREL++, the Robot Language: easy introduction to programming by novices.
Paper on: Implementation of Visual Languages (.pdf file)
C#'s implementation base: CLI, a.k.a. Microsoft .NET Framework.
An excellent review on UTF encoding: Forms of Unicode.
Concurrency versus language design: issues and concerns vis-a-vis multicore processors: "Software and the Concurrency Revolution" by Herb Sutter & James Larus, ACM Queue Magazine, V.3, N.7, Sept. 2005.
Python at Google: an account of Python's evolution and strengths.
Web course: Computer Language Engineering, Fall 2002 course in the MIT OpenCourseWare series Electrical Engineering and Computer Science. This course analyzes issues associated with the implementation of high-level programming languages.
A graduate course on Programming Languages.
Web course: 6.821 Programming Languages, Fall 2002 course in the MIT OpenCourseWare series Electrical Engineering and Computer Science. This course teaches the principles of functional, imperative, and logic programming languages through Scheme+.
Academic community languages:
Shooting yourself in the foot: the programming language way!
Please report any broken link.
Last update: Feb. 24, 2007.