Computer Science 330
Programming Languages and Software Engineering
Spring 2008

last updated January 8, 2008


[ Attendance | Sharing | Plagiarism | Deadlines | Exams | Special Needs ]


Instructor

Dr. Blaise W. Liffick
Roddy 142
872-3536

Required Text

Programming Languages: Design and Implementation, Pratt and Zelkowitz (4th ed.), Prentice Hall, 2001, ISBN 0-13-027678-2.

Course Description

This course investigates the relationship between the development of software engineering and the development of modern programming languages. The structure and vocabulary of modern programming languages are studied. Programming language topics include: binding, data control and sharing, type checking, subprograms and parameters, and implementation of language constructs. Major software engineering paradigms are studied. Software engineering topics include: requirements definition, specification, design, verification, validation, and relationships of paradigms to languages.

Goals

The successful student will be able to:
1. Represent elementary and structured data types.
2. Explain various models for data control, scope, lifetime, and type checking of variables.
3. Explain and use various parameter passing techniques.
4. Illustrate the flexibility of dynamic type binding over static type binding.
5. Explain and compare various models of run-time storage management.
6. Summarize non-procedural programming paradigms; compare non-procedural programming paradigms to the procedural programming paradigm.
8. Perform software requirements analysis and develop and/or interpret software specifications.
9. Describe various software design and implementation techniques and be able to use at least two of them to design and implement software.
10. Describe a software verification/validation technique and use it to verify a software artifact.
11. Explain risks of computing with examples.
12. Give a description of the History of Programming Languages.
13. Write a technical paper on a Programming Languages topic.
14. Give an oral presentation on a Programming Languages topic.

Grading

3 Exams @ 25%
Labs and Assignments 25%

I use a 100 point scale, with 93%=A, 90%= A-, 87%=B+, 83%= B, etc. You must pass all exams (collectively) with a minimum of 70% average in order to pass the course.

Attendance

All students are expected to regularly attend classes, be prepared for class by doing the assigned readings, and having completed any assignments. Only previously approved and university recognized absences are excusable. Excessive (>3) unexcused absences may result in your course grade being lowered one letter grade. Contact me prior to any absence (if possible) in order to obtain clearance.

Sharing

It is the premise in this course that students learn three different ways: (1) by attentive listening during lectures; (2) by doing things themselves; and (3) by sharing information and ideas with other students. This last item is important to the learning process, but it cannot be allowed to overshadow the importance of the other two items. Students are encouraged to share ideas and to discuss common problems. Much of this course is founded on the principal of cooperative learning, meaning that you will learn from each other, sometimes in a team format (when assigned).

Plagiarism

However, the preceding policy should not in any way be taken as approval of the act of plagiarism. Plagiarism shall be treated as the serious offence that it is. Acts of plagiarism shall be dealt with as severely as is permissable by university policy, including possible failure in the course. Multiple acts of plagiarism may result in expulsion from the university.

Plagiarism shall be regarded as any copying, in whole or in part, of material from any source, without explicit credit to the source. In addition, any copying from another student's assignments, past or present, shall be treated as plagiarism. All students involved in an act of plagiarism shall be treated the same as concerns this policy, including any student who knowingly allows his or her work to be copied.

Deadlines

Assignments are due at the beginning of the class period on the assigned due date, unless otherwise specified. No late assignments will be accepted. If your assignment is incomplete, turn it in for possible partial credit. Programs must cleanly compile for any credit. Developing your program incrementally will assure that you always have something for which you can receive some credit.

Exams

There are no make-up exams - if you miss a test, you will receive a zero. Exceptions may be made at my discretion for reasons of illness (as in "on your deathbed") or university excused absences.

Special Needs

Anyone requiring special accomodations should contact me as soon as possible, before any exams or assignments are due.