You are on page 1of 7

CS 4376 Section 501

Object-Oriented Programming Systems

Spring 2007

Lectures Fridays 12:30pm – 3:15pm


Location ECSS2.201
Instructor Dr. Yuke Wang
Office ECSS 3.224, UTD
E-mail yuke@utdallas.edu
Office hours Fridays 3:30-5:30pm, or by appointment
TA Xiangyang Liu email: xxl063000@utdallas.edu
Office ECSS3.612
Office hours – 3:30-6:00pm
Textbook The Unified Modeling Language User Guide, Booch, Rumbaugh,
Jacobson, Addison Wesley, 1999
References
1. The Unified Modeling Language Reference Manual, J. Rumbaugh, I.
Jacob and G. Booch, Addison-Wesley, 1998.
2. Object-Oriented Methods: A Foundation, J. Martin and J. Odell,
Prentice-Hall, 1995.
CS 4376 Object-Oriented Programming Systems (3 semester hours) In-depth study of
the features/advantages of object-oriented approach to problem solving. Special
emphasis on issues of object-oriented analysis, design, implementation, and testing.
Review of basic concepts of object-oriented technology (abstraction, inheritance, and
polymorphism). Object-oriented programming languages, databases, and productivity
tools. Prerequisite: Programming experience and knowledge of Java.
Course Objectives
1. In-depth study of object-oriented analysis and design of software systems based on
the standard design language (UML)
2. Study of a software development methodology. Presentation of the use-case driven
approach for software requirements specification, analysis, and design
3. Study and use of object and dynamic modeling techniques
4. Study and use of object-oriented system design techniques
5. Study and use of object-oriented implementation techniques
6. Introduction to CASE tools and techniques

Computer Usage You can obtain a trial version of Rational Rose to run the program(s)
on your home PC from IBM web sites (Since the URL changes from time
to time, do an internet search). A student version is also available. If you
wish, you can use the facilities at UTD too (ES2.104 on the ground floor
in ECS). All PCs in the labs of UTD are installed with Rational
Rose. There are several open access labs:
http://www.utdallas.edu/ir/tcs/labs/locations.htm. You will need to get a
user ID for the lab, https://netid.utdallas.edu. Need help? 972-883-2911,
assist@utdallas.edu, http://www.utdallas.edu/ir/tcs

Project (1) There will be two small projects - a java calculator and a java clock
radio. You will also implement a java email interface that can retrieve
email from servers.
(2) Submit a hardcopy of the project. The hardcopy should be submitted
by the expected due date in the beginning of the class that day.
(3) Submit the report, the source code in a CD or on webCT.

Tests There will be two tests, one in the middle (test 1) and the other at the end
(test 2) of the course.

Work, Deadlines, and Grading

Project I 1/19 calculator 10%


Project part II 2/2 clock radio 10%
Project Part III 2/16, 3/23, 4/27 email interface 30%
Class participation Every Friday 10%
Test 1 2/23 20%
Test 2 4/20 20%

The class participation grade is based on your class attendance. Later more than 15
minutes for a class will be counted as missing the class.

Class Policies
• No Makeup exam. If you miss midterm exam, your final will be counted as 40%
instead of 20%. If you miss the final exam, you fail the course. Incomplete grades
will not be issued.
• Instructor/TA would not tell students how to do the assignment/project questions
before the due date. Instructor/TA would not be able to help students to debug
their program either.
• Regular class attendance and participation are expected. Students are responsible
for lectures and announcements if she/he misses the class.

Late work Any assigned work will have 10% points deducted for each day past the
deadline. Work later more than 2 days will not be accepted.

Cheating/Dishonesty:

The University of Texas System Policy on Academic Honesty (The Regents and
Regulations, Part One, Chapter VI, Section 3, Paragraph 3.22):

Any student who commits an act of scholastic dishonesty is subject to discipline.


Scholastic dishonesty includes but is not limited to cheating, plagiarism, collusion, the
submission for credit of any work or materials that are attributable in whole or in part to
another person, taking an examination for another, any act designed to give unfair
advantage to a student or the attempt to commit such acts.

The minimum penalty for academic dishonesty is a failing grade (zero)

Course Outline (subject to healthy evolution)


1. Module 1 - Introduction to OOAD - Chap 1
2. Module 2 - Introduction to UML - Chap2 and 3
3. Module 3 – Classes - Chap4
4. Module 4 – Relationships – Chap 5
5. Module 5 - Common Mechanisms - Chap 6
6. Module 6 – Diagrams - chap 7
7. Module 7 - Class Diagrams – chap 8
8. Module 8 - Advanced Classes - Chap 9
9. Module 9 - Advanced Relationships – chap 10
10. Module 10 – Packages - chap 12
11. Module 11 - Instances & Object Diagrams, chap 13 and 14
12. Module 12 - Interactions & Interaction Diagrams, chap 15 and 18
13. Module 13 - Use Cases & Use Case Diagrams, chap 16 and 17
14. Module 14 - Activity Diagrams – chap 19
15. Module 15 - Events and Signals -chap 20
16. Module 16 - State Machines - chap 21
17. Module 17 - Design Patterns – chap 28

Percentage Grade
98-100 A+
92-97 A
90-91 A-
88-89 B+
82-87 B
80-81 B-
78-79 C+
72-77 C
70-71 C-
68-69 D+
62-67 D
60-61 D-
Below 60 F
General Notes applicable to all Homework Assignments:

All written homework e.g. designs shall be submitted on neatly printed 8.5" x 11" paper, properly
bound (stapled et cetera) and page numbered. The student name shall appear prominently on
COVER page. Submissions not meeting these requirements will be discarded by the instructor
with the resulting grade of F assigned for that particular assignment.

Coding assignments shall be submitted on CD or USB disk, with the student name, assignment
number, IDE and language affixed to a permanent label on the outside of the diskette.
Submissions not meeting this requirement will be discarded by the instructor with the resulting
grade of F assigned for that particular assignment.

All code submissions, regardless of language, shall adhere to the following coding standards:

There shall be a 'flower garden' preceding the main and each and every subroutine/method per
the following example; please version, date and sign your code per below.

// *******************************************************************//
// This program will examine a file output from windump with the -v
// option set (file name is capfile.txt and will parse and analyse the
// data in this file to determine if a port scan is taking place.
// The detection of the port scan is based on dual level analysis;
// signature wherein the port scan is detected by an attempt to connect
// to services not present as represented by ports in the well-known
// range who have no services e.g. ports 84, 34 etc.
// The second form of detection is statistical analysis where any detection
// of a SYN flag is logged and compared to further SYN detections over a
// one second time period. Any source IPs found to have sent more than two
// SYN within this time will be flagged as port scanners.
//
//
// The program works by converting a windump file (using windump -fv )
// to a parse file for analysis.
// Yuke Wang
// April 27, 2003
// version 3.0
//********************************************************************

#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

int moveToIP(int);
int pullOutIP(int);
char findFrameType(int); // determines if a synch frame
char findPacketType(int); // determines if arp or IP
void scanParse(void);

char input[200]; //make this globally visible for subroutines


// this is holds the input records from windump

// PLEASE NOTE THE HEAVY LEVEL OF COMMENTS ON ALMOST


// EVERY LINE - THIS IS A REQUIREMENT, NOT A NICETY.
// UNCOMMENTED CODE WILL RECEIVE AN AUTOMATIC F GRADE.

struct ipAnalysis // will hold the parse data for file writing
{
double time;
char asciiTime[10]; // ascii rep of time
char IP[21]; // the IP being contacted
char port[5]; // the port number
char pktType; // type of packet - ICMP, etc
char blank; // need a blank for parse
char frameType; // type of segment tcp or udp
char carriageReturn; // for end of line detection
};

ipAnalysis frame; // the struct for a full parse frame

void main(void)
{
fstream nameFile; // input file from windump
fstream outFile("parse.txt", ios::out | ios::binary);

int j = 0; // used to increment through captured records

int k; // used to parse the input record


bool foundIP = false; // used to parse
bool foundName = false; // haven't found the packet type

// TYPICAL SUBROUTINE COMMENT NB: note use of indents in while/if


structure below.

/////////////////////////////////////////////////////////////////
// This subroutine will determine if the frame is a synch (S) or
// not synch frame
/////////////////////////////////////////////////////////////////

char findFrameType(int index)


{
bool foundType = false;
char frameType;

while (foundType == false) // while frame type not identified


{
if (input[index] == 'S') // syn segment?
{
foundType = true; // found a synch frame
frameType = 'S';
}
else if (input[index] == 'P')
{ // scope brackets follow line not accompany
foundType = true;
frameType = 'P'; // found a packet frame
}

MORE CODING STANDARDS;

1) SPECIFIC INDENTATION WILL BE USED PER THE ABOVE.


2) SCOPE BRACKETS SHALL FOLLOW THE CLAUSE, NOT ACCOMPANY
IT PER THE ABOVE.
3) SPACES SHALL BE USED NOT TABS.
4) INDENTS WILL BE NOT MORE THAN ONE SPACE BEYOND CLAUSE
PER THE FOLLOWING:
if (someCondition)
{ // acceptable

if (someCondition)
{ // not acceptable.

if (someCondition) { // not acceptable.

NEW BELOW:
On scope closure brackets please add a comment that maps that scope closure bracket to its opening
statement. For example:

If (someCondition)
{
for (some Time)
{
yadda yadda;
} // close on for some Time
} // close on if someCondition

ALL CODING STANDARDS ARE NON-NEGOTIABLE AND SHALL BE


COMPLIED WITH.
Java tutorial

The overall tutorials are in the following page.


http://java.sun.com/docs/books/tutorial/index.html

JBuilder a free foundation edition here:


http://www.borland.com/downloads/download_jbuilder.html
netbean
http://www.netbeans.org/kb/trails/java-se.html

Code style for java


http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html

Essential Classes
http://java.sun.com/docs/books/tutorial/essential/index.html

Creating a GUI with JFC/Swing: Table of Contents


http://java.sun.com/docs/books/tutorial/uiswing/TOC.html
http://java.sun.com/docs/books/tutorial/uiswing/index.html
a good summary of GUI components.
http://java.sun.com/docs/books/tutorial/uiswing/components/components.html

How to Make Frames (Main Windows)


http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html
frame has 3 buttons - close, enlarge, and minimize.

Glossary
http://java.sun.com/docs/glossary.html
Basic Java language
http://java.sun.com/docs/white/langenv/

Summary
http://java.sun.com/javase/6/docs/
http://java.sun.com/javase/6/docs/index.html--- listing all java packages,
http://java.sun.com/j2se/1.5.0/docs/api/index.html

You might also like