CSUDH Computer Science Department 

CSC321: Programming Languages (Hybrid Online and In-class)

 Spring 2007

 

Instructor:                  Dr. Jianchao (Jack) Han

Phone number:           1-310-243-2624

Office:                         NSM A-133

Email:                         jhan@csudh.edu

Class time:                 TTH 5:30 pm – 6:45pm, meeting every Tuesday

Class room:                NSM B-208

Office hours:              TTH 10:15am-11:15am, 1:00pm-2:00pm, or by appointment

Course Webpage:      http://csc.csudh.edu/jhan/Spring2007/csc321

  

Textbook:      Programming Languages: Principles and Paradigms, 2nd edition, Allen B. Tucker and Robert E. Noonan, McGram Hill, 2007, ISBN: 0-07-286609-8.

 

Prerequisite:  CSC123, CSC221

 

Course Contents:  This course discusses the underlying concepts and constructs of principal programming languages and shows how they are dealt with in different languages.

  • First, introduce the role of programming languages in computer science and the syntactic structure of language descriptions.

  • Second, investigate common features shared by most modern programming languages. The specific topics will include variable names and binding, simple and structured data types, expressions and statements, control flow, procedures, functions, methods, modules, parameter passing, and memory management.

  • Third, discuss four programming paradigms, including imperative programming, object-oriented programming, functional programming and logic programming. Different programming paradigms will be illustrated with corresponding programming languages, such as Pascal and C for imperative programming; Lisp/Schema and ML for functional programming; Prolog for logic programming; and Java, C++ and Smalltalk for object-oriented programming.

  • Fourth, review two specific topics in programming languages: event-driven programming and concurrent programming, and demonstrate their implementations in Java.

Course Objectives:    By the end of this course, the students should

  • Master the syntax description of programming languages, especially BNF and Extended BNF, and be able to read languages’ definition.

  • Master the principal concepts and constructs of programming languages such as flow control, data types, data structures, procedures, functions, etc.

  • Master the two major programming paradigms: imperative programming, object-oriented programming, and be able to solve problems efficiently using imperative and object-oriented programming languages.

  • Have an understanding of functional programming and logic programming, and be able to read write and read simple Scheme and Prolog programs.

  • Improve the programming skills and the efficiency of programs by understanding implementation features of different languages and memory management.

  • Be able to understand the principles and mechanisms of event-driven programming and concurrent programming and write corresponding programs in Java.

  • Enhance the knowledge of the implementations of various programming languages and their pros and cons, and know how to select appropriate languages to solve specific problems in practice.

Requirements:  To pass this course, you must meet the following requirements:

Tests:           There will be ONE scheduled in-class midterm test and ONE final test. All tests will be closed-book and will cover information contained in the text as well as information presented in classes.

 

Homework:   Formal Writing Assignments

                      TEN formal writing assignments will be given. In order to complete these assignments, you’ll be assigned chapters/sections to read and summarize your readings and understandings.

                      You can work on these assignments anytime and anywhere, but they must be your own work. Discussion with other students and the instructor is encouraged, but copying from others’ work will not be acceptable.

 

Programming Projects:      

                      FIVE individual programming projects will be scheduled evenly during the semester. Programming projects must be submitted electronically. You can work on these projects anytime and anywhere. Discussion with other students and the instructor is encouraged, but it will not be acceptable to share codes with others. Your code must be clearly documented in appropriate and readable English. 

 

Grading:   To pass the course, you MUST write ALL exams, and complete at least EIGHT homework assignments and FOUR programming projects.

 

The following weights will be applied in calculating your final score:

The score will be mapped to your course one-letter grade as follows:

 

Range

Grade

Range

Grade

Range

Grade

[90, 100]

A

[70, 75)

B-

[53, 56)

D+

[85, 90)

A-

[65, 70)

C+

[50, 53)

D

[80, 85)

B+

[60, 65)

C

[0, 50)

F

[75, 80)

B

[56, 60)

C-

 

 

 

Academic Integrity:   Academic integrity is very important for all courses including this one at CSUDH. You are obliged to consult appropriate sections of the University Catalog and obey all rules and regulations imposed by the University relevant to its lawful missions, processes, and functions.

 

                   Unless specifically stated otherwise in this syllabus, all writing exams, homework and quizzes must be the students' own work. Plagiarism and cheating (e.g. stealing or copying the work of others and turning it in as your own) will not be tolerated, and will be dealt with according to the University policy. For the programming projects, general discussions with other students and the instructor are permitted and always encouraged, but sharing major portions of solutions is considered cheating. The consequences for being caught plagiarizing or cheating range from receiving a zero grade for the work you plagiarized or cheated on, to being dropped from the course.

 

Attendance: Students are expected and encouraged to attend lectures and contribute to discussions. It is the student’s responsibility to contact the instructor as early as possible if he/she cannot attend the class to write exams. With convinced reasons, the instructor might arrange another time to allow the students to write the missed midterm exams. However, there are no make-ups for missed quizzes and the final exam.

 

Drop Policy: The students should follow the course drop policy of the University. The last day to drop from FT to PT status with refund is February 9, Thursday, 2007, after which the drop/withdraw will be reflected in the students’ record of enrollment. The last day to drop/withdraw with serious and compelling reason is April 20, Thursday, 2007, after which the serious accident/illness will be required to drop/withdraw.

  

Tentative Class Schedule (subject to change):

We will do our best to adhere to the following schedule. If any changes are necessary, you will be notified in class. You are always expected and encouraged to have read the appropriate sections of the text before coming to class.

 

Wk

Topic

Ch.

Homework

Projects

1

Overview

1

 

 

2

Syntax

2

Hw 1

 

3

Names

Hw 2

Project 1

4

Types

5

Hw 3

 

5

Semantics

 7

 

 

6

Functions

9

Hw 4

Project 2

7

Memory Management 

11

Hw 5

 

8

Midterm Test

 

 

 

9

Imperative Programming

12

Hw 6

Project 3

10

Object-oriented Programming

13

Hw 7

 

11

Functional Programming I

14

Hw 8

Project 4

12

Functional Programming II

14 

 

 

13

Logic Programming I

15

Hw 9

Project 5

14

Logic Programming II

15

 

 

15

 

Event-handling

Concurrency

16

17

Hw 10

 

 

Final Examination: Thursday, May 17, 2007, 5:30pm -- 7:30pm.