CSC 1800 Organization of Programming Languages Fall 2005

SYLLABUS


Meetings
Section 1: Mon/Wed/Fri 12:00pm-12:50pm, Mendel Science Center G87
Instructor Dr. Thomas Way
160A Mendel Science Center

Email:   thomas.way@villanova.edu
IM:       DrTomWay
Phone:  (610) 519-5033
Office hours (see my web site)
Teaching Assistant Bryan Wagner <bryan.wagner@villanova.edu>
General help is available from Programming Assistants as well.
Office hours: see Programming Assistants' schedule on CS Dept. web site
Textbook Programming Languages: Principles and Practice. Kenneth C. Louden. Second edition. 2003. [ISBN 0-534-95341-7]
Prerequisites
  • Programming and problem solving (CSC 1052)
  • Basic logic concepts (CSC 1300)
  • Programming concepts: variables, simple data types (int, float, char, etc.), compound data types (arrays, lists, structures), data structures (linked lists)
  • Competency in a high level programming language (Java or C/C++)
Web site
All of the course materials, including the schedule, assignments, handouts, lecture slides, helpful resources, and this syllabus are available online by visiting the course website at http://www.csc.villanova.edu/~tway and following the link for CSC 1800.  The schedule is subject to change during the semester, so be sure to check the online version from time to time.
Catalog
description

High level language features: data types, control structures; formal lexical and syntactical analysis; operational semantics; language translation.
Course description Introduction to the theory behind the design of programming languages and the practice of coding in various programming paradigms.  Exploration of imperative languages (C, C++, Java, etc.), functional languages (Lisp, etc.), declarative languages (Prolog, etc.) and interpreted scripting languages (Perl, etc.).  The theoretical material will include syntax and semantics specification, scoping, binding, typing, parsing, parameter-passing, concurrency, object-oriented programming and exception handling.  Practical experience will including writing small programs in a variety of languages and a more extensive 3-part programming project.
Objectives Formally stated, the objectives of the course are:
  • Establish an understanding of the design principles underlying high-level programming languages.
  • Explore the definition and structure of various language features, including data types and control structures.
  • Establish an understanding of the issues related to language translation, including formal lexical and syntactic analysis.
Goals By the end of the semester, you will:
  • Understand how computer science concepts from all of your other courses are made practical in the design and use of programming languages.
  • Gain valuable experience with independently gathering new and pertinent information, and using it to solve problems and educate others.
  • "Think multilingual," at least when it comes to programming languages.
  • Learn a little about a lot of programming languages, and a lot about a few programming languages.
  • Master the subject of programming languages, providing you with valuable knowledge, skills and abilities that will help you in your future studies and career.
Topics
The schedule will provide lots of detail regarding the material we will cover this semester. In general, we will spend time on:
  1. Overview, history, design principles (1 week)
  2. Language syntax, semantics, data types, control structures (4 weeks)
  3. Abstract Data Types (1 week)
  4. Object-oriented programming (1 week)
  5. Functional programming (1 week)
  6. Logic programming (1 week)
  7. Formal semantics (1 week)
  8. Parallel programming (1 week)
  9. Presentations (2 weeks)
  10. Midterm and final exams (1 week)
Grading policy
Requirement How Many Points Each Total Points
Homeworks 4 50 200
Midterm Exam 1 100 100
Final Exam 1 200 200
Presentation 1 100 100
Projects 3 100 300
TOTAL possible   900
Final grades
93-100% A 80-81% B- 68-69% D+
90-92% A- 78-79% C+ 62-68% D
87-89% B+ 72-77% C 60-61% D-
82-86% B 70-71% C- 0-59% F

Participation is a highly valued and valuable commodity throughout the semester, which can often lift a grade to the next higher grade for borderline cases.

Academic Integrity
Follows the Academic Integrity Policies of both the Computing Sciences Department and of Villanova University. Discussion of class assignments with fellow students outside of class is welcome and can benefit your understanding, but all work handed in must be your own original work unless explicitly specified as otherwise.  This policy is taken very seriously.
URL: http://www.csc.villanova.edu/academics/academicIntegrity.jsp
URL: http://www.academics.villanova.edu/AcademicIntegrity.html
Attendance
Attendance is mandatory, following standard University policy for excused absences.
Late Assignments Assignments should be turned in on the date due. There will be a 10% penalty for each day an assignment is turned in late. In no instance will assignments be accepted after the date of the final exam.

Last updated: 9/17/05