CSC 339 - Concepts of Programming Languages
Department of Mathematical Sciences, UNCG
Spring 2001

Instructor: Dr. Nancy Green
Email: nlgreen@uncg.edu
Phone:  (336) 334-5836
Office Hours: Tu/Th 2-3 pm (and by appointment)
Office: 322 Bryan
Course web page:  http://www.uncg.edu/~nlgreen/csc339/csc339.html
    (It is your responsibility to check the course home page and announcements web page regularly.)
Announcements/Frequently Asked Questions


Course Description

Time: 330-445 pm Tu/Th
Room: Bryan 121 (note room change)

Prerequisites: Grade of at least C in CSC330 and basic knowledge of UNIX operating system and editors.

Brief Description: This course surveys basic concepts of several important families of high-level programming languages: imperative (like C), object-oriented (like C++), functional (like Lisp), logic-programming (like Prolog), concurrent-programming (like Java), and network-oriented (like Java).  For each of these, the course will examine key questions such as, What was the motivation for designing this type of language?, and What are the key technical issues in implementing interpreters or compilers and runtimes for it?   By answering these questions, it will be easier for you to learn new programming languages or more advanced features of the languages that you already know.  The course will have a lecture format.

Assignments:  Programming assignments in Java, Lisp, and Prolog; and possibly homework problems.

Required textbook:  Ravi Sethi, Programming Languages: Concepts and Constructs, 2nd Edition.
Recommended textbook:  R. Decker and S. Hirshfield, Programming.Java:  An Introduction to Programming Using Java, 2nd ed., Brooks/Cole, 2000, ISBN 0-534-37109-4.


Programming Assignment Information


  • UNCG Unix Documentation
  • Really well-written Unix documentation
  • Java Program Development at UNCG
  • Java Assignment
  • Java Lab Manual
  • Lisp Program Development at UNCG
  • Lisp Resources
  • UNCG Emacs Documentation
  • Lisp Study Lab 1
  • Lisp Study Lab 2
  • Lisp Assignment and submission instructions and solutions
  • FAQ for homework
  • Prolog Program Development at UNCG
  • BinProlog Online Documentation
  • On-line Prolog Book
  • Prolog Assignment and solutions


  • Administrivia

    Missed exams may be made up if (1) the absence is excused by the instructor before the exam is graded, (2) appropriate written documentation (specified by the instructor when the excuse is approved) is provided when the exam is made up, and (3) the exam is made up by the date specified by the instructor for make up exams.  Note that it is the student's responsibility to satisfy these 3 conditions on-time.

    Regular class attendance is expected.

    Collaboration on assignments, the project, exams (including make-up exams) is not allowed!!  Collaboration is considered to be a violation of the UNCG Academic Integrity Policy.

    All assignments are due on the dates given on the course calendar.   Late assignments will not be accepted!!

    Grading:

  • Test 1: 25%
  • Test 2: 25%
  • Test 3: 25%
  • Assignments: 25%


  • Calendar (Subject to Change)

    Note: This is not yet complete and may change.  It is your responsibility to check this for updates!
    Week (Tues./Thurs.) Lecture Topic Reading in textbook Note
    Jan 9/11 Introduction, Programming Language Description Sethi, ch. 1-2 
    Jan 16/18 Imperative Languages Sethi, ch. 3-5 (except 3.6)
    Jan 23/25 continued
    Jan 30/Feb 1 Object-oriented Languages Sethi, ch. 6-7 (except 7.7-7.8)
    Feb 6/8 continued, Test 1 Feb. 8 Test 1 on lectures, readings, and study questions for ch.1-7
    Feb 13/15
    Java
    Java text ch. 1-2, 5.
    Java Lab 1 (ex. 1), Lab 2 (ex. 1, 2, 4F)
    Note: the Java Labs are optional to help you get started on your Java assignment
    Feb 20/22 continued Java text ch. 3-4, 6, 9
    Java Lab 3 (ex. 1), Lab 4 (ex. 1), Lab 6 (ex. 1a), Lab 9 (ex. 1a)
    Feb 22: last day to turn in design for Java assignment
    Note: the Java Labs are optional
    Feb 27/Mar 1 continued Java ch. 11
    Lab 11
    Note: the Java Labs are optional
    Mar 6/8 (Spring Break)
    Mar 13/15 Concurrent-programming Languages Sethi, ch. 12 Mar. 20 (final extension): last day to turn in Java assignment 
    Mar 14: Last day to drop without penalty
    Mar 20/22 Java continued
    Mar 27/29 Test 2 Mar. 27  Sethi, ch. 10 Test 2 will cover Java and Concurrent-programming
    Apr 3/5 Functional Languages: LISP
    Apr 10/12 continued
    Apr 17/19 Logic-programming Languages: Prolog Sethi, ch. 11 (except 11.4) Lisp assignment due in class April 19 (note change! no late assignments will be accepted)
    Apr 24/26 continued, Test 3 April 26 Prolog assignment due in class April 24
    May 1 (no class)



     
     

    Course Resources

    Java
  • Ameritech Graphical User Interface Standards and Design Guidelines
  • Gamelan
  • Java Gently
  • Java World
  • On to Java
  • Sun Java Site
  • Dr. Jie Wang's Java programs (web interface), directory
  • UNCG Math Department Applet Club
  • Yale University Web Style Guide

  • Other programming languages and tools:

  • Alice
  • Lego Mindstorms Robot Programming Language
  • Python
  • Soar for Java Applets


  • Send comments and requests about this web site to nlgreen@uncg.edu