cs for transfers this is computer science for transfers. who is professor adams?

73
CS for Transfers This is Computer Science for Transfers. Who is Professor Adams?

Upload: emory-johnson

Post on 26-Dec-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

CS for Transfers

This is Computer Science for Transfers.

Who is Professor Adams?

Course Resources

C++ How to Program by Deitel and Deitel

UML Distilled by Martin Fowler Harley Hahn's Student Guide to Unix by

Hahn Course web page:

http:\\www.cs.rit.edu\~csx

Course Resources

Lecture Notes http:\\www.cs.rit.edu\~jaa\CSX-Fall00\home.html

Unix Beginners Guide Lecture and Lab Instructors Teaching Assistants Lab Assistants

Structure

Lecture - TR 6:00PM to 7:50PM 7B-A145

Lab Office Hours

Wednesdays 1 - 3PM Thursdays 3:30 - 5:30PM 10-1184

Schedule

Weekly reading assignments that correspond to lecture and lab assignments.

Weekly lab assignments. Two programming projects. Two in class exams. Final Exam.

Grade determination

Final Exam 20% Two in class exams 20% Labs 35% Projects 25%

Lab Assignments Pre-lab activities and reading. Post-lab exercise. Grading

Each lab is worth 20 points Final lab grade is the average of your

individual lab grades divided by 0.95. A 0 given for cheating will not be dropped.

Grades will be returned via e-mail.

Lab Assignments

Due Dates: Lab assignments are due at the end of the

day two days prior to your next scheduled lab.

No make-ups for missed labs. No late submissions are accepted. Submission for most of your labs will be

electronic.

Programming Projects

There are 2 programming projects. There will be scheduled deliverables leading up to

the final project due date. About 4 weeks for project 1 and about 3 weeks for

project 2. Projects will be turned in and graded electronically. Each project is worth 12.5% of your final grade.

In Class Exams

There will be two in class exams. 50 minutes long Each worth 10% of your final grade. Make-up exams are not given except for

extraordinary cases.

Final Exam

Date will be announced. A common exam will be given to all

sections at the same time. No make-ups nor early examination.

Comprehensive Coverage: All reading material, all lecture material, all

project material, all previous exam material, and all lab material.

Academic Honesty

Class Syllabus Department Policy Campus Wide Policy

Passwords

Once you have logged into the computer the first time, you should change your password. You should not write down your password. You should never share your password with

anyone. Sharing your password is a violation of the rules

for using the Computer Science systems.

Passwords Capital and lower case letters are distinct in

your password. Do not use an English word, your account

name, your license plate number, anyone's name, etc.

Do use a mixture of letter cases, punctuation, and numbers.

The password program will require your password to contain at least 6 characters made up of at least two letters, and at least one digit or special character.

Passwords To change your password:

Type yppasswd at the command line. You will be prompted to enter your login

password. This is the password listed on your sheet.

Next you will be asked to enter your new password. Then you will be asked to enter your new password

again. Finally you should get a message stating your

password has been changed. If it has not been changed repeat all the steps.

The Environment

Once you log into the system, there will be a panel at the bottom of your screen. From this panel you can launch your e-mail

and Netscape.

You will also have a terminal screen open. This window is used to type in commands

and see output from programs. To use this window, move your mouse over

it.

The Environment

If you would like to have an application available for later use and do not want to close it, you can hide or iconify the application. To close a window, left click the mouse over

the small bar on the leftmost top corner of the window. You should now see a menu, select either Close

or Minimize.

The Environment

If you would like to open a window for an application you have hidden you can: Double click with the left mouse button on

the application icon, or You can single click with the left mouse

button on the application icon and select Restore or Maximize from the menu.

Netscape

In order to start Netscape you simply need to select the icon residing on the main panel that is a large globe.

E-mail

You will use Netscape mail for your computer science e-mail. To launch your e-mail application, single

click on the main window icon that looks like letters in an in-box.

You will need to enter your account password which is the same as your login password.

Your CS e-mail is different for the account you were given at orientation.

Directory Structure

The UNIX directory structure is similar in concept to that found on PCs and Macs, but it is not visual. The command line operations allow you to

see files in directories. Type the command ls and it will show you the

files in the current directory. The command ls -a will show you all files in the

directory including dot files. DO NOT delete the dot files in your directory. Unix

requires them.

Directory StructureAbc1234

CSX notes.txt

Labs Projects

Lab1 Lab2

info_system.C

Directory Structure

To move between directories: If you wish to move to a specific directory

type: cd path/directoryName and hit return. If you wish to get back to your home

directory, ~abc1234, then type: cd and hit return.

To move up one directory level type: cd .. and hit return.

Directory Structure

To make a new directory, first change to the directory where the new directory should reside. Then type mkdir newDirectoryName and hit the return key.

Copying Files

To copy a file to a new file with a new name: cp fileNameToCopy fileName

To copy a file from one location to your current directory: cp fileLocation/fileNameToCopy fileName

To copy a file from your current directory to a new location: cp fileNameToCopy newFileLocation/fileName

Moving Files

To move a file to a new name: mv oldFileName newFileName

To move a file from one location to your current directory: mv fileLocation/fileNameToMove .

To move a file from your current directory to a new location: cp fileNameToMove newFileLocation/.

Printing Files

Files can be printed by default to the printer in the lab you are working in. To print a file type:

lp fileName

Make Files

During lab you will be asked to create a make file. Make files contain the instructions for

compiling and linking your programs. To create a make file you type

makemake > Makefile

You can then use the command make to compile and link your program.

Simply type make on the command line and hit the return key.

If make finds errors in your program, it will list them.

RCS

RCS is a repository that stores different versions of your program. This can be important if you decide an hour

before your program is due to make significant changes. If those changes do not work, you can go back to an earlier version with out having to remove all the changes.

Read the Introduction to RCS before going to lab.

Non-responsive Applications

To stop a running application that is not responding, move you mouse over the application window and select the del key.

File Redirection

File redirection is used to send information from one file to another. The following provides the file test as input

to the program runIt. runIt < test

The following outputs the results of running the program testOut to the file out.txt testOut > out.txt

Object-Oriented Programming

Object-Oriented Programming (OOP) allows you to create your program based upon modeling objects. Your programs properties and behaviors

are modeled based upon real objects like cars, books, houses, etc.

Object-Oriented Programming Lets model a car

Properties are variables that describe the essential characteristics of an object. For a car they are: color, model, make, how many doors, transmission type, direction of movement, etc.

Behaviors are methods that describe how the object behaves and how the behaviors may be modified. For a car they are: braking, changing gears, opening doors, painting the car, moving forwards or backwards, etc.

Object-Oriented Programming

The variables of an object are said to be encapsulated This means that only the code written for

the object can directly access the variables. Code in another object can not directly access the variables.

Instance variables

Object-Oriented Programming

The methods of an object may or may not be accessible to code in other objects. Instance methods

Object-Oriented Programming

Encapsulation allows the programmer to hide the implementation details from the other objects and the users. In other words the implementation is

transparent to the other objects or the user. Examples: Word, Excel, Web pages.

Object-Oriented Programming

Benefits of Encapsulation: An object can be written and maintained

separately from the rest of the program, modularity.

An object has a public face that it uses to communicate with other objects but the other objects can not directly access the instance variables, Information Hiding.

Object-Oriented Programming

Instance Variables

Method 1 Method 3

Method 4

Method 2

Messages

Objects communicate much like humans do, they pass messages back and forth to one another. Each message has three components:

The object to whom the message is addressed.The name of the method to perform in that object.Any parameters (variables) needed by that method.

Message: ObjB.method2(1,2)

Classes

Classes are the definitions (or blue prints) used to create objects. To make a car the manufacturer must first

have a design from which to build the first car. Then once all the problems are worked out, the design is used to build all the cars for that model.

It will model the instance variables and methods an object will have.

Classes

When an object is created (instantiated) from a class it consists of its own independent copy of the instance variables. The information stored in this objects

instance variables are not affected by changes to instance variables in another object created from the same class.

What is UML?

UML stands for Unified Modeling Language. UML is a modeling language used to

express software designs. UML facilitates:

Specifying, visualizing, understanding, and documenting problems.

Capturing, communicating, and leveraging knowledge in problem solving.

Specifying, visualizing, constructing, and documenting solutions.

What is UML?

UML captures knowledge (semantics) about a problem and expresses knowledge (syntax) about the problem.

What is UML?

UML defines: A notation in graphical models, or the syntax of

the language. A meta-model is a diagram that defines the

notation.

UML is based upon the object-oriented paradigm.

UML can be applied to different types of systems, domains, methods, and/or processes.

What is UML?

UML enables software teams to capture, communicate, and leverage strategic, tactical, and operational knowledge to improve software quality, reduce costs,and reduce the product cycle time.

UML was originally developed by Rational Software Corporation in cooperation with Grady Booch, James Rumbaugh and Ivar Jacobson.

Goals of UML

UML is intended to be a ready-to-use visual modeling language that is simple and extensible.

UML is intended to be implementation independent (programing language or hardware).

UML is independent of the development process.

Goals of UML

UML is intended to address recurring architectural complexity problems.

UML is scalable. UML is intended to be general purpose

and powerful while being simple to use. UML is intended to communicate

information about a problem. Natural language is too imprecise. Code is too detailed.

What UML is not

UML is not: A visual programming language that

communicates an implementation or solution. It is a visual modeling language that

communicates the conceptual model or specification model.

What UML is not

A specification tool or repository. UML is a modeling language specification that

provides modeling elements, notation, and usage guidelines.

A process that provides guidance on the order of activities, specifications of tasks, etc. It does enable the process by promoting a use-

case-driven, architecture-centric, iterative, and incremental process that is object oriented and component based.

The Development Process

Problem SolutionConceptualization Problem-Solving Realization

Inception Elaboration Construction Transition

Development Cycle Product Generation

The Inception Phase

During the Inception phase, the team develops the business rationale and the project scope. How much the project will cost? How much money will be made from the

project? How big is the project?

The Elaboration Phase

During the elaboration phase, the team collects more detailed requirements, does a high-level analysis and design for the baseline architecture, and creates a construction plan. Determine what it is you will actually build. Determine how you will actually build the

project. Assess the project risks.

The Elaboration Phase

The elaboration phase is completed when: The team feels comfortable providing a

development schedule. The team feels that all the significant risks

have been identified and the major risks are understood.

The elaboration phase usually takes about a fifth of the total project development time.

Project Risks

Types of project development risks: The first risk is to ensure the team

completely and accurately understands what should be developed. This is called requirements risks.

The second risk involves the technology the team will use to develop the product. What hardware, programming languages, etc. This is called technology risks.

Project Risks

Risks: The third risks involves the level of

experience and expertise your team requires to complete the project.

Finally, the political risks must be assessed. Such risks may affect the teams ability to complete the project.

Requirements Risks

UML can be used to mitigate the requirements risks. Use cases can be used to document the

expected interaction between the user and the product. Use cases usually correspond to the

requirements. Use cases are defined for most, if not all

functions the product will perform. It is very difficult to define all use cases.

Requirements Risks

UML can also be used to develop a conceptual domain model. The domain model defines the

environmental constraints, and user constraints for the product. An understanding of the domain model is useful

for developing the use cases and the requirements.

Requirements Risks

Another UML tool used to mitigate the requirements risk are interaction diagrams. Interaction diagrams represent how the

various roles interact in the product. This may be human-human, human-machine,

machine-machine.

Requirements Risks

The UML tools we will discuss can provide the development team with the capability to record domain expertise that is critical for mitigating requirements risks.

Technological Risks

The technological risks usually involve incorporating different types of technology into the overall product. This could be as simple as ensuring that the

product runs on Windows 2000 or as complicated as predicting how the pieces will work with hardware that has not yet been developed.

Technological Risks

One of the best ways to mitigate technological risks is to prototype the system components and try them out.

Another way to mitigate the technological risks is to design the product such that components can be replaced if the desired components do not work. (Flexibility)

Technological Risks

The UML use cases are one tool that can be reviewed to determine if there are any technological risks.

Skills Risks

Team members who do not have the proper training or not enough training are risks to the project. Mitigating skills risks means ensuring that

the team has access to training and mentors. Most companies want to skimp on paying for

training, the result is that the project takes longer to complete.

In the end, the cost to develop the project is the same or more than the training costs would have been.

Political Risks The political risks for each project are

different. The risks may be that the project is "high

stakes" meaning that there is a lot of pressure to create the best product, as cheaply as possible, in the shortest time possible.

The risks may be that the project is "low stakes" meaning that the team may work for a period of time, and then the project is canceled.

Political Risks

Another example of a political risk is "stepping on someone else's turf". This means that the project is viewed as taking work away from another group or is an overlap of another groups work.

Political problems are not fun!!

The Construction Phase

During the construction phase, the product code is actually developed and tested. The construction phase is a series of

iterations during which code is developed, tested, and integrated.

The development schedule determines what features will be constructed during a particular construction phase iteration.

The Construction Phase

The first step is to determine which use cases will be implemented during each iteration (development of the release schedule). The product users should divide the use

cases according to business value. The developers should divide the use cases

according to development risks. High risk items should be scheduled for early

iterations.

The Construction Phase

The iteration duration should be determined. It is possible that each iteration will not be

the same length. In general, an iteration should be long

enough to allow the developers to complete a handful of use cases.

The order of use cases in certain iterations may require the order of use case implementation to be changed.

The Construction Phase At the completion of each iteration, the

released code should permit a user demonstration and systems test should be performed to verify requirements.

At the end of the construction phase, the UML documents that have been created can be used to help document the system but should not be the sole documentation.

The Transition Phase

The transition phase involves all the activities that need to be left at the end of the development cycle. Alpha and Beta testing. Performance tuning (optimization). User and support personnel training.

The Transition Phase

Alpha testing usually involves on-site testing of the complete system to ensure it works properly.

During Beta testing a subset of the customer base uses the completed system for a period of time before the product is made available to all customers. Usually still debugging the system.

The Transition Phase

It is important to leave the system optimization until the end because: Optimization usually reduces the clarity of

the system. This complicates the development process and

can increase the development time.

The Transition Phase

There should be no new code development during the transition phase. It is possible that the developers will be

correcting bugs.