California State University, Chico
Department of
Computer Science and Engineering
Syllabus/Course
Requirements
Course Number: CSCI 312 -01 (Spring 2003
Semester) Units: 3.0
Instructor: Jim McElroy
Class Days,
Times, and location: Tu, Th 9:30 – 10:45 AM MLIB
031
Satisfies
Graduate Area:
Software Engineering/Systems Analysis
Course Catalog
Name:
Software Engineering
Class degree of difficulty: On a scale of 10, probably about an 8.5. Will be more or less depending on your
experience in the areas of OOAD, coding, and relational databases.
Course
Catalog Description: In-depth study and application of the
planning, design, implementation, and management of complex software systems.
Topics include requirements engineering, formal specifications, object-oriented
analysis, design patterns, and peopleware. Teams of students will implement a
large software project using a cutting edge software engineering approach.
Instructor’s addition to the above: Course will include study of software development lifecycle, and
the software engineering artifacts in each phase of the development
lifecycle. Planning documents include
Gantt charts, Pert charts, Work Breakdown Structures (WBS), and risk analysis
documents. Requirements analysis
documents include Increment Plan, Use Case Model, requirements catalogs, rules
catalogs, data dictionaries, and glossaries.
Domain analysis and design documents include UML class diagrams,
sequence diagrams, collaboration diagrams, state diagrams, ER diagrams, and
various architectural diagrams.
Implementation artifacts include CODE!
Yes, there is a coding requirement for this class. You and your team will be expected to design and implement a three-tiered system of your choosing in Java.
Coding artifacts include: UI module, application module, database interface module, the relational database configured per your ER diagrams, and test harnesses for the application module.
Prerequisites: CSCI 112 and classified
graduate standing. You MUST have a
strong knowledge of UML to take this class. If you do not know UML, then you should take CSCI 311 first. Strong Java skills, and a knowledge of
relational databases will also help a lot.
Prerequisite classes WILL BE checked for any students struggling with
the course material. If it is found
that you do not have the prerequisites, you will receive an “F” in the class.
Course Objectives:
· To impart a firm understanding of what it means to be a software engineer
· To discuss the differences between programs and engineered software produced via a software production process.
· To impart an understanding of software development lifecycles, the phases and activities of a lifecycle, and the artifacts (documents and code) created in each phase of a lifecycle.
· To present an overview of software management topics, including project planning tools and diagrams, team organization, human factors, configuration management, and risk analysis.
· To cover Requirements Analysis, including use cases, traditional requirements gathering techniques, and user interface prototypes as a tool for obtaining customer feedback. (Review for CSCI 312).
· To cover Domain Analysis, including UML class diagrams. (Review for CSCI 312)
· To cover System Design issues, including system architecture, UML statecharts, UML interaction diagrams, and database design. (Review for CSCI 312)
· To discuss software quality and software quality assurance, including the topics of reviews, inspections, walkthroughs, unit testing, integration testing, stress testing, system testing, acceptance testing, regression testing and possibly other testing issues.
· To discuss the SEI CMM and ISO 9001 standards in relation to software quality.
· To discuss various software metrics. Both traditional and object-oriented metrics will be covered.
· To cover maintenance, reuse, and tools issues in relation to software engineering.
· To have the students use and apply formal specifications, software modeling and development tools, and produce code conforming to their abstract specifications and models.
Course Outcomes:
Upon successful completion of this course, students will
· Understand the principles of software engineering outlined above.
· Understand and be fluent in the use of software engineering terminology and nomenclature
· Be capable of intelligently communicating with most members in a software development organization (management, analysts, architects, developers, SQA)
· Be able to create and use planning, requirements analysis, domain analysis and design artifacts and carry them into code.
· Be capable of taking on the role of systems analyst in a software development organization
· Have the necessary tools to become a software development project manager
This course
embodies a significant portion of (a) Theoretical Foundations (b)Problem
Analysis and (c) Solutions Design
|
Topic |
Percentage |
Hours |
|
Algorithms |
0 |
0% |
|
Data Structures |
10 |
4.5% |
|
Software Design |
75 |
33.75% |
|
Concepts of Programming Languages |
5% |
2.25% |
|
Computer Organization and Architecture |
10% |
4.5 % |
Office: OCNL 221
Office Hours: If you forget, see my web-site. Also posted on the office door.
M: 1:00 – 3:00 PM W: 12:30 – 2:00 PM Tu: 2:00 – 3:25 PM Th: 2:00 – 3:25 PM My Office Phone number: 898-6357
CSCI Office: 898-6442
E-mail: jmcelroy@ecst.csuchico.edu. I have several e-mail addresses, but they all end up at the same place. Please do not send duplicate e-mails to me at different addresses. And please do not use jmcelroy@csuchico.edu if at all possible
Course Web site: www.ecst.csuchico.edu/~jmcelroy (there is a CSCI 312 web page there).
Textbooks / Materials – Required:
Applying UML and Patterns (Second Edition): An Introduction to
Object-Oriented Analysis and Design by Craig Larman, Prentice Hall , 1998. ISBN 0137488807
UML and the Unified Process: Practical Object-Oriented Analysis and Design by Jim Arlow and Ila Neustadt. Addison-Wesley, 2002. ISBN: 0 201 77060 1
UML 1.4 Notation Guide. Available for free on my web-site.
Very Valuable References:
Instant UML by Pierre-Alain Muller. Wrox Press, © 1997. (ISBN: 1-861000-87-1) NOTE: This book is currently no longer being printed in its current edition. Copies ARE available via Amazon.com and other online booksellers. The second edition is due out sometime in April 2003. I was going to use this book as a required textbook for this class, but its limited availability at this time prohibited that. However, I STRONGLY recommend that you acquire this book.
Design Patterns: Elements of Reusable Object-Oriented Software by Gamma, Helm, Johnson,
and Vlissides, Addison Wesley, 1995.
ISBN 0-201-63361-2.
Object-Oriented Modeling and Design by James Rumbaugh, et.al., Prentice Hall ,
1991. ISBN 0136298419.
Software: The TogetherSoft CASE tool can
be used in this class. (CASE stands
for Computer Aided Software Engineering).
This tool is available for free on the web. In addition, the Java SDK 1.3.1 or 1.4 will be needed. You can use any IDE you prefer with Java
(e.g., Borland’s Jbuilder) or no IDE at all.
You will also need a relational database. You can also use Microsoft Access, which is available in the MS
Office Suite, or any other decent relational database you can beg, borrow,
steal, or buy. (whoops – don’t actually
steal one.)
1.
Project
50%. Due dates TBA
2.
1
Midterm @ 25%. Date TBA
3.
1
Final Exam @ 25%. Date TBA
It is my policy to return
all exams and projects, if you want them returned.
My Policy on Plagiarism: If you copy on a small scale, you will get a zero on that assignment. If you copy on a large scale (e.g., most of your project) you flunk this class. I will check your student records for previous incidences of plagiarism. If there are none, I will file a report. If there are previous incidences of plagiarism, I will bring it to the attention of the Dean, who will probably have you expelled from the University.
My policy on Make-Up exams: If you can document that you were seriously ill or had other compelling reasons, I will administer make-up exams. HOWEVER, I WILL NOT accept early trips home or early assignments to internships as reasons for taking a final exam early. I have had too many students taking finals early serving as “scouts” for other students. Book your plane reservations after the final exam, or tell your prospective employers that you must finish school.
First Assignment, due ASAP: Send e-mail to the instructor providing the following information: 1. Your name.
2. Have you have taken 311 and/or 112? If yes, which ones.
3. Do you know Java? How well?
4. Do you know Relational Database design?
5. Your general computer background.
6. Any experience with Software Engineering
7. Any experience with requirements gathering, analysis, and design.
8. Other Programming languages you know
9. Courses you have taken and are taking in computer science
10. Systems you are familiar with
11. What you would like to get out of this course (knowledge-wise, not grade-wise).
Please include the tags in your e-mail. E.g. Name: Jim McElroy 311 or 112?: Have taken 311.Know Java? Yes. Intermediate level.Relational Database design: Know how to make ER diagrams and to code SQL.
Experience with Software
Engineering: Read book on UML once.
Etc…