
INSS 520
Software Structures
Syllabus -
Harrogate
Term 1 – 2002/2003
Course Times: Tuesdays & Thursdays
1930 – 2230 hrs
Lecturer: Susan Propst 01423-500564
Email: jon@propst.fsnet.co.uk (I do not necessarily check email every day if
it is time critical, ring me)
Office Hours/ Lab hours:
After class/TBD
Text:
Concepts of Programming Languages,
Robert W. Sebesta,
5th edition, Addison-Wesley, 2002,
ISBN 0-201-75295-6
Course
Pre-requisites:
All undergraduate prerequisite courses or permission
of the instructor.
Course Description
This course provides an in-depth look at
programming languages, which are used to write application software. The course
surveys the broad range of programming languages, and then focuses on those
properties of a language which are needed in order to design and specify the
processing instructions and data structures of a computer program. Language
syntax and semantics will be explored while considering procedural,
non-procedural, functional and logic programming languages. The type of
language to be used depends on the problem to be solved as well as on the
qualities of the language. The effect of language selection on software
engineering will be discussed, with a look at current trends and expectations
among software developers.
Students
will be required to complete programming projects.
Course Objectives
Students
who successfully complete this course should have a basic understanding of:
The
fundamental nature of programming languages and how they work
Major
attributes of several programming languages
Tradeoffs
in programming language design and usage
Data
types and abstract data types
Virtual
computer concepts
Structured
programming concepts
Object-oriented
programming concepts
Criteria
for selecting a programming language
How
a programming language can support good software engineering
Course Evaluation: Grades for this course will be based on:
|
Mid-term
exam |
25% |
|
Final
exam |
25% |
|
Research
Work (group project) |
15% |
|
Research
Work - Presentation |
10% |
|
Programming
Projects |
25% |
|
Total: |
100% |
and will be assigned as follows:
A -----90-100%
B -----80-89%
C -----70-79%
F ----- Less than 70%
Policies:
Please
refer to the UMUC Graduate Catalog.
Academic
Dishonesty and Plagiarism will not be tolerated. Plagiarized papers, reports, or exams will receive a grade of
zero. This would also apply to a
student knowingly allowing another student to plagiarize their work.
Attendance:
This
is a very fast paced course and failure to attend class will likely result in a
significant burden to keep pace with the course. If you miss a class try to study the materials scheduled for the
class and get notes from a fellow student.
Make-up Examinations: Need to be arranged prior
to absence unless caused by an emergency. In any case, appropriate
documentation will be required.
Lab Time:
I
will conduct lab time outside of the scheduled class time to assist
students. I feel the appropriate use of
time in the lab is for the following:
Answering specific questions on the subject matter
E.g. questions on specific language syntax.
Discussing algorithms and code solutions in terms of
pseudocode
Generally I do not feel it appropriate to debug a
student’s program. If you find that after a considerable time and effort you
are still unable to resolve a compiling error I will try to give you guidance,
time permitting.
Student Responsibilities:
Since this is a graduate level course, students are expected to participate in class. I encourage questions commensurate with the level of the course being taught.
You
will get the most out of the class if the assigned chapters have been read
prior to class. All assignments are
expected to be turned in on time – late work will not receive full credit.
Students
are responsible for all material covered in class. If you miss a class, it is
your responsibility to get the class notes from another classmate.
This
course is designed to teach the basic concepts and theories of
programming. Students must expect to
invest a significant amount of time practicing these concepts in order to
become proficient in programming.
Course Work
One of the main objectives of the course is to provide the necessary tools and concepts to allow students to critically evaluate and compare programming languages. Students will identify the fundamental concepts of programming languages and the design issues in building the various language constructs.
All
assignments
must be typed, and include the student’s name and date of submission.
Programming
projects must include the following statement:
I certify this project is of
my own development and design.
Proper credit has
been given to any outside source.
Research
Project:
The research project will allow students to
select and evaluate a programming language of their choice. There should be a
minimum of overlap between the topics as to encourage diversity rather than
repetition. Format will be specified when the assignment is presented.
Programming
Projects:
Programming projects will be designed to allow students to identify steps in selecting appropriate programming languages for different tasks. Programs must be well documented. Programs must be complete, extensively tested, and must meet design specifications prior to submission. These are not group projects and must be completed by each student independently. Students who receive excessive help will receive a reduction in grade commensurate with the amount of help.
Each
programming project will include:
1. Project
description- in your own words
2.
Programming language used
3.
Advantages and disadvantages of the programming language used
4. List of
all problems encountered while developing your project. Clearly indicate which
problems you were able to solve and which you were not.
5. Any
assumptions you had to make during the project development.
6. A
statement that the program works. A
program is considered to work only when it displays the correct results. You are required to extensively test your
program to guarantee that it meets the standards defined in each assignment.
8
Tentative Schedule: (Note: Schedule may change to accommodate students’ needs.
The instructor reserves the right to modify the syllabus when needed. )
|
Class |
Topic |
Reading Assignment |
|
1 |
Introduction
to Course Procedures Intro
to Programming Languages |
Chapters
1 & 2 |
|
2 |
Syntax
and Semantics |
Chapters
3 & 4 |
|
3 |
Names,
Bindings, Type Checking, and Scopes |
Chapter
5 |
|
4 |
Data
Types |
Chapter
6 |
|
5 |
Expressions
and the Assignment Statement |
Chapter
7 |
|
6 |
Statement
level controls Due
– Programming Project 1 |
Chapter
8 |
|
7 |
Subprograms Review
for the mid term |
Chapter
9 (9.1-9.6) |
|
8 |
Mid
Term Exam material
covered through class #6 |
|
|
9 |
Subprograms Implementing
subprograms |
Chapters
9 & 10 |
|
10 |
Abstract
data types Support
for OO programming Due
– Programming Project 2 |
Chapter
11 Chapter
12 (12.1-12.6) |
|
11 |
Support
for OO programming Concurrency |
Chapter
12 (12.7-12.13) Chapter
13 (13.1-13.4) |
|
12 |
Concurrency Exception
Handling Due:
Research Project - Group Work |
Chapter
13 (13.5-13.8) Chapter
14 |
|
13 |
Functional
Programming Languages Group
Work- Presentation session 1 |
Chapter
15 |
|
14 |
Logic
Programming Languages Group
Work - Presentation session 2 |
Chapter
16 |
|
15 |
Final
Review Due:
Programming Project 3 Course
Evaluation Group
Work - Presentation session 3 |
|
|
16 |
Final
Exam -- Comprehensive |
|