CSE305: Programming Languages

Summer 2010

MW10:00am - 12:05pm146 Park
MW12:10pm - 1:14pm138 Bell
User Friendly Comic 3/11/2004

Instructor

Michael Prentice
UB Commons #17
Email: mjp44@buffalo.edu
     (Always include "CSE305" in the subject line)
Office hours:
     Monday 1:30-3:30
     Tuesday 11:00-Noon
     and by appointment

Course description

Examines the various components of programming languages so students will understand the choices that have been made by programming language designers, and how those choices affect how procedures may be expressed and how data are conceptualized. Topics generally include the nature of variables, types, expressions, control structures, subprograms, concurrency, and exceptions; syntax and semantics. Discusses different programming paradigms, such as imperative, functional, logic, procedural and object-oriented.

Prerequisites

CSE250: Data Structures

Course objectives

Textbook

Robert W. Sebesta, Concepts of Programming Languages, Ninth Edition, Addison-Wesley, Boston, 2010, ISBN 978-0-13-607347-5. List price: $107. Use the companion web site for PowerPoint lecture notes, PowerPoint versions of figures in the book, and mini-manuals for C, C++, and Java.

Resources

UBlearns

Your current grades will be available on UBlearns. Use the course Discussion Board inside UBlearns for questions and discussions meant for the entire class, including clarification of assignments between class and recitation meetings. Check the discussion board regularly for new postings. It will be monitored. Do not use the discussion board to share answers to assignments.

Academic policies

This course will abide by the CSE Department academic integrity policies (See Undergraduate Policies and Dr. Rapaport's page on academic integrity) and the UB undergraduate incomplete policy (see the Undergraduate Catalog Explanation of Grades). The short versions are:

This course will also abide by the University's principles and procedures regarding students with disabilities. If you have a diagnosed disability (physical, learning, or psychological) that will make it difficult for you to carry out the course work as outlined, or that requires accommodations such as recruiting note-takers, readers, or extended time on exams or assignments, you must consult with the Office of Disability Services (25 Capen Hall, Tel: 645-2608, TTY: 645-2616, Fax: 645-3116, http://www.student-affairs.buffalo.edu/ods/). You must advise your instructor during the first two weeks of the course so that we may review possible arrangements for reasonable accommodations.

Course organization

The course has both a lecture component and a recitation component. Each component plays a role in helping you achieve the objectives of the course. If you do not participate fully in both you should not expect to do well in the course. Outside of the scheduled course times, both office hours and your own study times are critical components of the course.

Lectures

The conceptual and theoretical course content will be delivered primarily in the lectures, complemented by readings from the text books. You must review readings prior to attending a lecture, and you are expected to review the readings again, along with any notes you took, after the lecture.

Some of the topics will be difficult. It is therefore absolutely essential that you ask questions whenever something is said which you do not understand.

Attendance in all lectures is mandatory and is critical to your success in this course. Attendance will be taken in lecture, and will count towards your final course grade. Lack of attendance in lecture can be grounds for failure in the course. If you are unable to attend a lecture because of sickness or similar reasons, make sure you get the notes from a classmate. If you are out of class for an extended period of time because of sickness, notify your instructor as soon as possible, and see your instructor immediately upon your return in order to determine how to catch up. If you have missed a significant portion of the semester due to illness, it is recommended that you resign from the course.

Recitations

The recitations are an integral part of this course. Attendance in all recitations is mandatory and is critical to the success of the course project. Attendance will be taken in recitations, and will count towards your final course grade. Lack of attendance in recitation can be grounds for failure in the course.

Recitations will review lecture material and provide you with an opportunity to ask more detailed questions about the course material than can typically be addressed in lecture. Some material needed to do the programming projects may be covered only in the recitations.

Time outside of class

Office hours

Office hours offer you the opportunity to ask more individual questions about the course material than can typically be addressed in lecture or recitation. Office hours are held on a first-come first-served drop-in basis. No appointment is necessary to attend office hours. Be aware that office hours become increasingly busy the closer it is to a project deadline. Plan your use of office hours accordingly.

Individual appointments may be arranged, if needed, as schedules allow.

Study time

In this course, as in any course, you are expected to put in additional time beyond the scheduled class times. Professors generally expect that for each credit hour a typical student will put in 2-3 hours of time each week outside of class. In a summer course this expectation is doubled. Since this is a 4 credit course that translates into 16-24 hours of time outside of scheduled times, each week. During this time you should review your lecture notes, attend office hours as needed, get hands-on practice applying the class material, and work on assignments. As a rough guide, you should expect to spend at least the following time working on this course, each week:

Course evaluation

Homework

Homework for this course consists of readings from the textbook, programming exercises, and writing assignments. Reading and homework will be assigned daily and must be completed by the next class unless otherwise indicated.

Exams

There will be two in-class exams: a mid-term and a final. Exams are cumulative, open note, and closed book.

A review session will be held before each exam.

If you cannot take an exam at the scheduled time for any reason, contact the instructor immediately.

Grading

Each homework problem will be assigned a point value. Homework points will be cumulative. The final homework grade will be the percent of points earned over maximum points possible. The final course grade will be a weighted average of the total homeworks, the midterm exam, and the final exam, according to the following weights:

Homeworks50%
Midterm Exam20%
Final Exam25%
Attendance5%
Total100%

Many homework and exam questions will be graded on the 3-point grading scheme:

Substantially correct:3 points
Mostly correct:2 points
Mostly incorrect:1 point
Substantially incorrect:0 points

The mapping from percents to letter grades will be:

  84-89B+68-72C+34-44D+ 
95-100A79-83B57-67C18-33D0-17F
90-94A-73-78B-45-56C-  

You should check the electronic grade sheet within the course UBlearns Site regularly, and promptly report any discrepancy between the grades shown there and your own records of your grades to the instructor.

Regrading

If you have a question about the grading of any piece of work, you should consult with the instructor of the course. Any questions about the grading of a piece of work must be raised within one week of the date that the work was returned by the teaching assistant or the instructor. In other words, if you do not pick up your work in a timely fashion, you may forfeit your right to question the grading of your work.

Incomplete (I) grades

We will follow the UB Undergraduate Catalog Statement on Incomplete Grades.

Generally, incomplete (I) grades are not given. However, very rarely, circumstances truly beyond a student's control prevents him or her from completing work in the course. In such cases the instructor can give a grade of I. The student will be given instructions and a deadline for completing the work, usually no more than 30 days past the end of the semester. University and department policy dictate that I grades can be given only if the following conditions are met:

Incompletes can not be given as a shelter from poor grades. It is your responsibility to make a timely resignation from the course if you are doing poorly for any reason.

General notes

If you don't understand something covered in class, ask about it right away. The only silly question is the one which is not asked. If you get a poor mark on an assignment, quiz, or exam, find out why right away. Don't wait a month before asking. The instructor is available to answer your questions. Don't be afraid to ask questions, or to approach the instructor in class, during office hours, in the hallways, or through e-mail.

This course is intended to be hard work, but it is also intended to be fun. Play with the computer, and have fun with the neat and elegant programming ideas covered in this course. We think computer science is interesting and exciting, and we want to convince you of this. Work hard, but have fun!

Counseling center

Your attention is called to the Counseling Center (645-2720), 120 Richmond Quad. The Counseling Center staff are trained to help you deal with a wide range of issues, including how to study effectively and how to deal with exam-related stress. Services are free and confidential. Their web site is http://www.student-affairs.buffalo.edu/shs/ccenter/

Calendar

Dates of topics are approximate. Chapters refer to the chapters in the text. Read each chapter before the first lecture in which it will be discussed, and again afterwards.

WeekMonWed
1 6/7
Preliminaries & Basic Concepts

Reading: Chapter 1, Section 15.1, Section 16.1
Extra reading: Chapter 2
Evolution of Programming Languages, Dr. Shapiro's view

Links:
Shapiro's notes on basic concepts

Homework: Assignment 1
6/9
Syntax & Semantics [slides]

Reading:
Sections 2.4, 2.13, 2.20
Chapter 3

Links:
Recitation 2: CSE Servers
Shapiro's notes on syntax

Homework: Assignment 1 extension
2 6/14
Names & Variables [slides]

Reading: Chapter 5.1-5.4

Links:
ASCII Chart
Shapiro's notes on names

Homework: Assignment 2
6/16
Variables, Bindings, & Scope [slides]

Reading: Chapter 5.5-5.8

Links:
Returning large objects in C++
Shapiro's notes on variables

Homework: Assignment 3
3 6/21
Continue Variables
Reading: Continue chapter 5
Homework: Catch up on reading
6/23
Chapter 6: Data Types [slides]

Reading: Chapter 6

Links:
Shapiro's notes on data types

Homework:
Finish Assignment 3, reading
4 6/28
Mid-term review
Assignment 3 due
6/30
Mid-term exam
Mid-semester course evaluation
5 7/5
HOLIDAY (NO CLASSES)
7/7
Semantics [slides]
Expressions and Assignments

Reading:
Sebesta section 3.5
Operational Semantics
Loop Patterns
Sebesta chapter 7
Expressions and Assignment Statements

Links:
Trie (Wikipedia)

Homework: Assignment 4
6 7/12
Expressions and Assignments [slides]

Reading:
Sebesta chapter 7
Expressions and Assignment Statements

Homework: Assignment 5
7/14
Expressions and Assignments
Statement-Level Control Structures [slides]

Reading:
Sebesta chapter 8 (short)
Larry Wall interview parts 1 & 2 (pp. 370-371, 408-409)
Statement Level Control Structures

Homework: Continue Assignment 5
7 7/19
Control Structures Continued
7/21
Concurrency

Links:
Dr. Shapiro's Notes on Concurrency

Homework:
Finish Assignment 5
Finish all re-submits
Catch up on reading
8 7/26
Guest lecture: Jon Bona
Subprograms [slides]

Links:
Dr. Shapiro's Notes on Subprograms
7/28
NO CLASS

Use this time to finish all makeups, assignments, reading.
9 8/2
Final Review [slides]
8/4
Final exam