Skip to Content - Skip to Navigation

COSC 420 Modern Programming Languages

Loading...

Prerequisite: COSC 310

A comparative survey of programming language paradigms. Includes an examination of the properties, applications,  syntax, and semantics of selected object-oriented, functional, and declarative programming languages.

Course Outcomes

Upon successful completion of this course, the students will be able to:

  1. analyze the syntax, semantics, type handling, coercion rules, scoping rules, naming rules, and exception handing of several programming languages
  2. interpret BNF, syntax diagrams, parse trees, context-free grammars and other forms to syntax and semantics of a programming language
  3. distinguish the lexical and syntax analysis of a language
  4. perceive the differences between imperative, object-oriented, functional, aspect-oriented, and declarative languages
  5. recognize the types of applications where imperative, object-oriented, functional, aspect-oriented, and declarative languages will be best suited
  6. demonstrate the strengths and weaknesses of different programming languages

Detailed Course Outline

1. Programming Languages – preliminaries, history, and evolution — 0.5 week

2. Describing Syntax and Semantics — 1.5 weeks
  - Lexemes, tokens
  - Language recognizers
  - Language generators
  - Context-free grammars       
  - Backus-Naur Form (BNF)
  - Extended BNF
  - Syntax diagrams
  - Parse trees
  - Ambiguity
  - Unambiguous grammar
  - Attribute grammar
       
3. Lexical and Syntax Analysis — 1.0 week
  - Lexical analysis
  - Parsing problem
  - Top-down parsing
  - Bottom-up parsing 
  - Recursive-descent parsing
  - LL and LR parsers    

4. Names, Bindings, Type Checking, and Scopes — 1.0 weeks

5. Data Types — 1.0 week

TEST-I — one class period  

6. Functional Languages, such as ML and Lisp — 3.0 weeks

7. Object-Oriented (OO) Language, such as SmallTalk with comparison to  other OO-languages — 2.0 weeks

8. Annotation and Aspect-oriented programming — 1.0 week

TEST-II — one class period

9. Declarative Language, such as Prolog — 2.0 weeks

10. Exception Handling — 1.0 week

Total = 14 weeks 

Final Exam: During Final Exam week

Evaluation Methods:

The final grade of the course will be determined as follows:

Two Class Tests   30%
Comprehensive Final Exam 25%
Language Projects   25%
Assignments   20%

Sample written projects related to languages that students must do in this course:

  1. SmallTalk and its difference from other OOP Languages, such as JAVA and Visual Basic
  2. Ada 95- Object-Oriented Programming Language
  3. Fortran 90 and 95 and their differences
  4. Differences between functional languages ML, Miranda, and Haskell
  5. Perl – Programming Language
  6. Eiffel – Programming Language
  7. Differences between scripting languages, such as Java Script, PHP, and Python
  8. Or any other interesting programming languages (upon instructor’s approval)

Example Grading Scale: 

The grading scale will be:
90-100% = A, 80-89% = B, 70-79% = C, 60-69% = D, and < 60% = F.

Undergraduate Course Attendance policy: 

The attendance policy will conform to the universitywide attendance criteria.

Required Textbook, Supplemental Books, and Readings:

Sebasta, Robert W. Concepts of Programming Languages (7/e), Addison Wesley, 2006, ISBN #0-321-33025-0

Webber, Adam B. Modern Programming Languages: A Practical Introduction, Franklin, Beedle & Associates, 2003, ISBN #1-887902-76-7

Loading...
  • Computer Science Department
  • Stright Hall, Room 319
    210 South Tenth Street
    Indiana, PA 15705
  • Phone: 724-357-2524
  • Fax: 724-357-2724
Loading...
  • Office Hours
  • Monday through Friday
  • 7:30 a.m. – 12:00 p.m.
  • 1:00 p.m. – 4:00 p.m.