cs for transfers this is computer science for transfers. who is professor adams?
TRANSCRIPT
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.
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.
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.
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 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.
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.