Syllabus: CS 2511 Software Analysis and Design
Course Content and Objectives
This course follows and requires the freshman introductory sequence CS
1511-1521. It is intended to provide the background necessary to undertake
serious programming projects that the student will later encounter in
advanced courses, actual jobs, or research. The course takes up where the
freshman year leaves off in the discipline of object-oriented design and
coding, and introduces Java as the object-oriented programming language.
Students will acquire skills in the analysis, design, and implementation of
medium-scale software development projects.
Analysis topics include:
- Problem analysis
- Requirements gathering and specification
- Use case analysis
Design topics include:
- Interface types and abstract classes
- Polymorphism and inheritance
- Design patterns
- Frameworks
Implementation topics include:
- Using an integrated development environment
- Implementing and using data structures, including:
- Graphs and graph searching algorithms
- State space search
- Priority queues and binary heaps
- Hash tables
- Building graphical user interfaces
- Systematically testing and debugging code
Students will also be introduced to the scripting language Javascript.
Grading Basis
Grades will be based on the total points earned on
exams, programming assignments, and lab activities. These points
are broken down as follows:
| item
| number
| points each
| total
|
| Midterm Exam
| 2
| 100
| 200
|
| Final Exam
| 1
| 150
| 150
|
| Individual Programming Assignment
| 6
| 30
| 180
|
| Lab Exercises
| 14
| 10
| 140
|
| Grand Total
|
|
| 670
|
The final grades will be based on the 670 point total. Generally:
90% guarantees an A
80% guarantees a B
70% guarantees a C
60% guarantees a D
These grade cutoffs will never be raised; but they may be lowered.
Course Organization
We will meet in large lecture on Tuesdays and Thursdays, when new
material will be presented. Accompanying readings from the text and web
sources will be
indicated on the course web page. The midterm exams and final exam
will also be given in large lecture.
Dates are given on the TERM SCHEDULE.
You will meet in lab on Mondays, at a time depending on which section you are in,
where you will be led by a graduate teaching assistant. Here you will
perform lab exercises and work on individual assignments.
On Fridays you will meet in your discussion section which will also
be led by your TA.
In these sessions, you will go over lecture material, review for exams,
discuss the individual
assignments and lab exercises, and learn about the programming tools.
Midterm exams will also be returned and gone over during these meetings.
Course Policies
Lectures
You are responsible for all material presented in lecture. Lecture notes
are available from the textbook web page (see above).
Discussions and Labs
Discussion and lab attendance is essential for succeeding in this course.
Your TA will be a Computer
Science Department graduate student. He or she is your primary source of
help for completing
programming assignments and for understanding
lecture material covered by the exams.
There also are fourteen 10-point lab exercises. Working on
these during your lab hour allows you to take advantage of help from your
TA.
Exams
Exams will cover all lecture and reading material. Coverage and topics will
be given on the course web page well before the time of the exam. Exams must
be taken on the hour they are scheduled. They will not be given
early, and can be made up only if documented evidence of medical
emergency or death in the family is presented before the time of the
exam.
Note: See the Term Schedule for the final exam
date. It will
not be given early. If you are an international student, do not make
travel plans before this date.
Individual Assignments
As indicated, you will be given six individual assignments involving
analysis, design, and implementation of Java programs.
Each assignment will be
thoroughly described on the course web page.
Submission of Assignments and Lab Exercises
All lab exercises and assignments must be submitted
electronically, allowing the intructors to both run the code and check for
code duplication.
For full credit all assignments and lab exercises must be submitted by 8:00
p.m. on the day they are due.
Assignment due dates are shown on the Term Schedule.
More details will be given in the lab and assignment web
pages.
Development Environment
The development environment assumed by labs and assignments will be NetBeans.
Although the lab sessions will be held in a PC lab, outside of class you are
encouraged to make use of the workstations in the Computer Science
Department Software Development Lab in Heller 314.
Collaboration
All lab exercises and assignments in this course are individual, and just like an
essay or term paper, any work for them is expected to be your own. You may
discuss an assignment and general approaches to a problem with your
professor, your lab instructor, lab consultants, or your classmates, but
you must analyze, design, and write your programs yourself. You may
consult with others to seek help in debugging, but you may
not collaborate with anyone on the writing of your code.
There will be no collaboration on the 10-point lab exercises.
There will be no collaboration on exams.
Late Submissions
Lab exercises and assignments must be turned in by 8:00 p.m. the days they
are due. Ample time is given to complete these projects, and the only reason
for being late will be poor time management.
Late submissions are subject to the following penalties:
- One day late: 20% of the total value of the assignment or lab will be deducted
- Two days late: 40%
- More than two days: 50%
Late submissions will be accepted through Friday of the last day of the
regular semester; they will not be accepted during finals week.
Permission to Copy Your Work
As you may know, the Department of Computer Science has an
ABET-accredited bachelor's degree in CS. This is an indication of the
strength of our program, and it benefits CS majors and even non-majors
by allowing us to provide strong course offerings.
In order to retain accreditation, we must periodically collect samples
of student work for each of the courses. To that end, I would like your
permission to anonymously copy samples of your work in this course.
This will be done by eliminating all identification such as names, ID's,
etc. before copying the work. This is voluntary. In the past almost all
students have agreed to this, which has been a key factor in retaining
accreditation.
If you do not want your work copied for this purpose, please send me
an email to that effect.
Thank you for helping with this; it is very much appreciated.
Etc.
- Student Success Roadmap
- UMD Tutoring Center
- As instructor I shall make every attempt to treat all students
equally, without regard to race, religion, color, sex, handicap, age,
veteran status, or sexual orientation. To inquire
further about the University's policy on equal opportunity, see the
Office of Equal Opportunity.
-
If you have any disability (either permanent or temporary) that might
affect your ability to perform in this class, please contact the Access Center, and
inform me at the
start of the semester.
Last Word
All excellent things are as difficult as they are rare. -- Benedict Spinoza