Syllabus

CS 361: Principles of Programming Languages I

Fall 2011

Meeting Times

Lect: 1:00 - 1:50 M, W, HB 106

Labs: 1:00 - 1:50 Tu, Th, HB 203

Instructor

Dr. Razvan Andonie, HB 219-B, Office hours

TA

Zachary Haberman, HabermanZ@cwu.edu

Text

Modern Programming Languages: A Practical Introduction
Adams Brooks Webber, Franklin, Beedle & Associates, second edition, 2011, (referred to as MPL below)
.
C++: How to Program, 6e, Deitel & Deitel, (referred to as C++ below) Prentice Hall, eighth edition, 2012.

 

Grading

Exams (2 - 20% each)

40%

Projects

60%

 

Grading Scale

95 - 100

A

90 - 94

A -

87 - 89

B +

83 - 86

B

80 - 82

B -

77 - 79

C +

73 - 76

C

70 - 72

C -

67 - 69

D+

63 - 66

D

60 - 62

D -

0 - 59

F

Objectives

The primary goal of the classes CS 361 and 362 is to provide students with the tools necessary for the critical evaluation of existing and future programming languages and constructs. A secondary goal is to prepare students for the study of compiler design and construction.

The CS 362 class provides a wide-ranging and in-depth discussion of programming language concepts. Fundamental concepts of programming languages are presented through the design issues of the various language constructs, by examining the design choices for these constructs in a few common languages, and critically comparing the design alternatives. The class also covers the most widely used methods of syntax description and introduces the most common approaches to describing the semantics of programming languages. Discussions of implementation methods and issues are integrated throughout the class.

In addition, the class will introduce students to the C++ programming language which will serve as a principal example in many of the constructs considered above.

Learning Outcomes

Upon completion of this course, you will demonstrated the ability to

 

Lectures & Projects: The slides for lectures can be found in the shared directory.

 

If you must miss an exam, contact your instructor prior to the exam to schedule a time to make it up. Late submission of assignments is generally not accepted. No partial credit for late assignments will be offered.

Course Schedule

Date

Topic

Readings - Item Due

9/21

Introduction

Syllabus

9/22

Project 0 (not graded): Run Visual C++, compile and execute Project 0.

Walkthrough: Working with Projects and Solutions (C++)

9/26

Classes, Objects and Strings

C++: Ch. 3

9/27

Project 1

9/28

Control Statements, Functions

C++: Ch. 4-6

9/29

Project 1

10/3

Arrays

C++: Ch. 7

10/4

Project 1

Project 1 due

10/5

Pointers

C++: Ch. 8

10/6

Project 2

10/10

Pointers

C++: Ch. 8

10/11

Project 2

10/12

Classes I

C++: Ch. 9

10/13

Project 2

10/17

Classes II

C++: Ch. 10

10/18

Project 2

Project 2 due

10/19

Operators

C++: Ch. 11

10/20

Project 3

10/24

Inheritance

C++: Ch. 12

10/25

Project 3

10/26

Review

10/27

Project 3

10/31

Exam 1 (closed book)

11/1

Project 3

Project 3 due

11/2

Polymorphism

C++: Ch. 13

11/3

Project 4

11/7

Templates

C++: Ch. 14

11/8

Project 4

11/9

Custom Templatized Data Structures

C++: Ch. 20

11/10

Project 4

11/14

Standard Template Library

C++: Ch. 22

11/15

Project 4

Project 4 due

11/16

Standard Template Library

C++: Ch. 22

11/17

Project 5

11/21

Standard Template Library

C++: Ch. 22

11/22

Project 5

11/23

Thanksgiving

11/24

Thanksgiving

11/28

Programming Languages: Overview, Defining Program Syntax

MPL: Ch. 1&2

11/29

Project 5

11/30

Language Systems

MPL: Ch. 4

12/1

Project 5

Project 5 due

12/7

Final Exam (closed book): noon 2:00

Honor Code: All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. The following text should appear on all assignments: I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here.

Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Do not work together to solve the programming assignments to the extent that two programs are essentially the same solution. All program solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code.

First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment, an incident letter will be placed on file in the Computer Science Department, and the matter referred to the Computer Science Department Chair.

Class Attendance: Class attendance is expected and recorded.

ADA Statement: Students with disabilities who wish to set up academic adjustment in this class should give me a copy of their "Confirmation of Eligibility for Academic Adjustment" from the Disability Support Services Office as soon as possible so we can discuss how the approved adjustment will be implemented in this class. Students without this form should contact the Disability Support Services Office, Buillon 205 or dssrecept@cwu.edu or 963-2171.

Caveat: The schedule and procedures for this course are subject to change. It is the student's responsibility to learn of and adjust to changes.