|Instructor Contact Information|
|Day(s)||Time of Day||Location|
|MWF||12:20||PM||103 Love Building|
For a few of the scheduled days, shown in the course calendar, there may be no regular class because I am required to travel on University business. This class time will be made up by specially scheduled class meetings (to be arranged) in which students will demonstrate their projects for me and the other students who are able to attend. These meetings will be arranged at multiple times, if necessary, so that every student can demonstrate his or her project.
|Catalog Description & Overview|
"Survey of software engineering and detailed study of topics from requirement analysis and specification, programming methodology, software testing and validation, performance and design evaluation, software project management, and programming tools and standards."[FSU Graduate Bulletin]
Software engineering is a very broad field. It encompase virtual everything a person might want to know in order to develop software -- software that is correct, on time, and on budget. Most other computer science courses emphasize the technical foundations of software development, such as programming, algorithms, data structures, languages, etc. This course focusses on the pragmatic aspects, such as requirements analysis, cost estimation, design, team organization, quality control, configuration management, verification, and testing.
The field of software engineering has several areas, each of which could well justify an entire semester of study. Since this course is the only course on SE taken by many students, we will sacrifice depth for breadth.
My intent is that students coming out should be familiar with the core concepts and jargon in each area, have gone into a little more depth on some areas, and have experienced an attempt at applying software engineering methods to an actual project, as a member of a team.
The formal prerequisites for this course are COP4020 Programming Languages, COP4531 Complexity and Analysis of Data Structures and Algorithms, and CEN 4010 Software Engineering.
The CEN 4010 prerequisite to CEN 5035 is awkward. The intent when the prerequisite was put in place was that CEN 5035 would start up where CEN 4010 leaves off. However, that imposes some practical limitations. CEN 5035 is required of all graduate students in the Software Engineering major, and is also one of the three core courses in the Software area. Most of our graduate students come to FSU with an undergraduate major in CSthat does not include a course comparable to CEN 4010. Even at FSU, CEN 4010 is an elective for undergraduate majors. Therefore, if this prerequisite were enforced strictly most the students who want to take this course would need to start by taking CEN 4010, an undergraduate course. Moreover, the catalog description of CEN 5035 is of a survey course. Two surveys of the same area are bound to have some overlap.
In recognition of the overlap and the small number of graduate students who enter with CEN 4010 or the equivalent on their transcript, the FSU software engineering faculty have agreed to allow an exception to the CEN 4010 prerequisite. The exception is that a student who has not taken CEN 4010 may enroll in this course if and only if all of the following conditions are satisfied:
It is the responsibility of each student who has not taken CEN 4010 to clear this exception with the instructor, in person.
The following are the minimum specific capabilities you will need from the prerequisite courses:
The course is a survey of the field of software engineering, with a practical component. Students leaving the course should:
have experience of working as a member of a team on a software engineering project
have experience applying a representative cross section of software engineering techniques
Author: Roger S. Pressman
Title: Softare Engineering: A Practitioner's Approach (5th Edition)
Publisher: McGraw Hill
Table of Contents:
Part One: The Product and the Process
Chapter 1 The Product
Chapter 2 The Process
Part Two: Managing Software Projects
Chapter 3 Project Management Concepts
Chapter 4 Software Process and Project Metrics
Chapter 5 Software Project Planning
Chapter 6 Risk Analysis and Management
Chapter 7 Project Scheduling and Tracking
Chapter 8 Software Quality Assurance
Chapter 9 Software Configuration Management
Part Three: Conventional Methods for Software Engineering
Chapter 10 System Engineering
Chapter 11 Analysis Concepts and Principles
Chapter 12 Analysis Modeling
Chapter 13 Design Concepts and Principles
Chapter 14 Architectural Design
Chapter 15 User Interface Design
Chapter 16 Component-Level Design
Chapter 17 Software Testing Techniques
Chapter 18 Software Testing Strategies
Chapter 19 Technical Metrics for Software
Part Four: Object Oriented Software Engineering
Chapter 20 Object-Oriented Concepts and Principles
Chapter 21 Object-Oriented Analysis
Chapter 22 Object-Oriented Design
Chapter 23 Object-Oriented Testing
Chapter 24 Technical Metrics for Object-Oriented Systems
Part Five: Advanced Topics in Software Engineering
Chapter 25 Formal Methods
Chapter 26 Cleanroom Software Engineering
Chapter 27 Component-Based Software Engineering
Chapter 28 Client/Server Software Engineering
Chapter 29 Web Engineering
Chapter 30 Reengineering
Chapter 31 Computer-Aided Software Engineering
Chapter 32 The Road Ahead
We will be using a subset of the above chapters in this course. It is also a good reference to keep.
Class notes, assignments, and other information you need to read for the course will be provided on the web, as the term progresses. Links to such information (direct or indirect) will be provided from the Course Home Page. You are expected to read it all.
Regarding the class notes: initial versions of these notes may sometimes be provided before class, but they will not be static. Expect them to be updated shortly before or after the corresponding class meetings.
Readings.You will be assigned readings in the textbook, and on the web. However, what we cover in class will not correspond exactly. In class we will go into more depth on some things, and less depth on others.
Class Participation. The study of much of Computer Science is cumulative (i.e., understanding earlier material well is necessary to grasp later material. Do not allow yourself to fall behind, by postponing studying, and then figure you will jump ahead to catch up with the rest of the class.
Experience has shown a high correlation between absenteeism and low grades. Therefore, you are required to attend all class meetings. Attendance may be checked at random times throughout the term. You will be allowed three (3) absences without question or justification. After that, your "Deliverables" score will be reduced by an amount to be determined. If you have a documented religious holiday or emergency, additional absences may be excused.
Examinations.There will be a midterm examination and a final examination. These examinations will be "closed book". That is, no books or reference materials will be allowed in the examination room. These are the main check on how much you have learned from the course.
Examples of some questions from prior terms will be provided on the Web, with answers, so that you are prepared for the format of the exam and have a chance to review by taking a practice exam. (Please don't assume the examination will be limited to the knowledge covered by the sample questions!)
On-campus students will be expected to take the examinations at the scheduled time, shown on the course calendar.
If you know in advance of a reason you will not be able to take a scheduled examination you are responsible for making arrangements in advance with me. If you make prior arrangements, or have a documented last-minute emergency conflict -- such as a medical emergency or your employer requires you to make an out-of-town trip -- I will attempt to accommodate you. However, under no circumstances will a student be allowed to take an examination before the rest of the class. Also, it must be understood that we cannot give the same examination, and because of time constraints, I may administer a makeup examination of an entirely different format. In the past, most students who have missed midterm examinations have chosen not to take a makeup examination. Instead, they relied on a special rule (see below), which allows any missed midterm examination scores to be replaced by the final examination score.
Quizzes. Short quizzes may be given in class, possibly without any warning, if I get the impression students are not keeping up with the course. If quizzes are given, the will be averaged in with your midterm examination score, with weighting to be determined. There will be no make-ups for quizzes, but the same forgiveness rule applies as for attendance.
Programming assignments. There will be one software engineering project, which you will do as part of a team. The project will require you to make incremental deliveries through out the term, which will be graded. The objective of the project is to give you experience trying to apply the principles and techniques covered in the course, as part of team working on a real software product.
More details on the project will be posted as the term progresses, on the assignments Web page.
Unless specified otherwise, deliverables will be due at midnight on the due date shown on the course calendar.
Every piece of graded work will be assigned a score in the range 0 to 100. At the end of the term these numeric grades will be averaged to compute your final grade for the term, using the following table:
The following are the items that will be graded, and the weights they will be given:
Special Rules and Other Notes:
If the Final Examination grade is higher than the Midterm Examination, the Midterm Examination will be thrown out and Final Examination will be used to replace it.
This rule is based on the fact that the final examination is comprehensive, and is intended to motivate students who do not perform well on earlier exams to persevere and overcome those setbacks by further study. It also solves the problem of occasional emergencies which may cause a student to miss a midterm examination.
If either the Project or the Examinations grades (considered individually) is below B-, the final grade for the course will not be higher than C+.
Take note of this rule! In the past, some students have complained at the end of the semester when it caused them to fail the course. There is a good pedagogical reason this rule. A grade low grade in either of these two areas indicates failure to learn an essential part of the the course. The knowledge and skills covered by the examinations and the programming assignments are both essential, and do not overlap more than a little bit. On the one hand, within the time limitations of an examination one cannot adequately software development skills. On the other hand, we do not have time in the semester to assign a project that requires you to use every important concept of the course. I also recognize that if a student depends too heavily on other members of the team, the project grade may not accurately reflect what that individual has learned. For all these reasons, completely unsatisfactory performance in either one of two these areas cannot be ignored on the basis of better peformance in the other areas.
All graded work will be returned in class. Students who miss class are responsible for pickin up their papers no later than one week after the start of the next semester. Work that is not picked up by then may be discarded. The one exception are final examinations. The University requires that the original copies of all final examinations be retained in the Department for two years.
Do not expect forgiveness for lateness. Whether to accept any late turn-ins of assignments will be entirely at my discretion. If a late assignment is accepted, the score will ordinarily be reduced. The amount of the reduction will be entirely at my discretion, and may depend on how late the assignment is. In any case, no work will be accepted for grading after a solution is discussed or handed out, either in the class or on the web.
|Academic Honor Code|
You are required to read the FSU Academic Honor Code and abide by it. Take note that this policy not only puts you on your honor not to cheat. It requires that you report any cheating that you observe. First violations will result in lowering of the final course grade by one whole letter. Repeat violations will result in a grade of F with no provision for retaking the course.
I have learned that a few students need the following additional explanation, to clarify what is allowed and what is not allowed with respect to the kind of cheating that gives us the most trouble in CS courses, i.e., plagiarism.
I know that nearly all students are honest, have a well developed ethical sense, and don't need to be given such detailed instructions on what is allowed and what is not. However, because of University policy and a few past experience with students who tried to excuse cheating by complaining that the rules were not stated clearly enough, I have gradually been forced to draw sharper lines and go into more detail.
By turning in work for a grade in this course you are representing it as being entirely your own individual work. Unless otherwise specified in writing, all homework (including all programming assignments) is expected to be individual work. If any assignment permits teamwork, it will be explicitly stated so in the assignment, and then the work is required to be only the work of the people on the team.
You may well ask "What does `individual work' mean? Shouldn't I make sensible use of references and prior art?". When a person has a question or a problem it is normal to search publications (including the Web) for information, ideas, and sometimes even code. However, there are intellectual property laws and academic ethics that restrict what you can do with the work of other people, and some still stronger restrictions on what you can do for programming assignments for this course. The following paragraphs are intended to explain these restrictions. However, I understand that I am dealing with distinctions that can sometimes appear to be fuzzy. If, after reading this section, you are still in doubt about whether something you are considering doing would be a violation of intellectual property law, academic standards, or the rules of the course, you should either refrain from doing it, or consult me for a ruling. Likewise, if you are unsure whether something you have observed is allowed, please do not hesitate to ask me.
It is important for all citizens, especially future writers and software development professionals, to understand the basics of intellectual property law. Computer software is subject to both copyright and patent law. Copyright law protects the representation of a written work, whether it be a photograph, drawing, diagram, text, or computer code. Copyright law says that all such works start out as owned by the original author and cannot be copied legally without permission of the owner. If you have permission to copy, you generally required to give credit to the copyright holder and a note saying that the work is reproduced with her/his permission. There is an exception for copying small amounts of text without permission, if you identify such quotations and give credit to the author, under a vaguely defined principle called "fair use". Patent law protects the ideas behind a work. It restricts what you can do with ideas you get from other people. If an idea is patented, you cannot use it at all without a license.
Unfortunately, simple statements about law -- like the ones above -- always turn out to be oversimplifications. That is the nature of the legal system. The laws are complex and are continually being modified by the actions of legislatures and courts. Every lawyer I've ever asked for legal advice has ended by saying he cannot predict the outcome if a case comes to trial, since the ultimate decisions are in the hands of the specific judge or jury. So, what should a person do? Do your best to gradually become better informed of the law. For example, you could read one or more of several tutorial's on the Web. FSU's ODDL has placed links to some such tutorials at http://online.fsu.edu/learningresources/academics.html#copy. Then, you should exercise conservative judgment. If you are in doubt about whether what you are about to do would be a violation of intellectual property law, you should either refrain from doing it, or consult a lawyer to get clarification.
Scholarly ethics start with the law, and go further. Academic ethics require that if you use information or ideas obtained from the work of another person you must at least give proper credit to the original author, identifying what you have used, where you obtained it, and who is the person to whom credit is due. Failure to give proper credit or properly indicate uses of someone else's work is plagiarism, which is a violation off the FSU Academic Honor Code. Giving credit means citing the source of the information in the body of the paper (or program) at the point where it is used, and then including a full citation for the source in a list of references at the end of the paper (or program). Further, if any material -- and this includes diagrams and computer code, as well as text -- is used verbatim, it must be clearly identified as quoted text, with a citation of the original source. Normal practice is to use quote-marks around the quoted text in a paper (special delimiting comments for code), with a number or abbreviation for the in-line citation, referring to an entry in a list of the full citations at the end of the document. For a more detailed explanation of plagiarism, I suggest you read FSU Political Science Professor Dr. Paul Hensel's web page on plagiarism and proper citation practices http://garnet.acns.fsu.edu/~phensel/citation.html.
In the context of this course -- because programming assignments are used to assess what you have learned, and because even a few lines of code may represent a great deal of creative thought -- we must adhere to a higher standard for originality and independence of programming assignments than you may have found for the work in some other courses.
For the team assignments in this course, you are required to design and write your own solutions within the team. You are not allowed to show your code or documents to another person outside the team, other than me (the instructor of this course), or to read the solution code or documents of another student outside the team,
You may not put more than two (2) lines of verbatim material related to a solution to an assignment in any public message (e.g., discussion forum or chat room).
You are responsible for taking steps to protect your work, including setting the permission bits on the directory containing your code to make unreadable to anyone except yourself and your team members, not leaving a workstation where you are logged in unattended (someone might step up and read your code or print out a copy), and not leaving printouts of your code in the printer or a public wastebasket. This also means you cannot send all or part of your solution to an assignment to another student outside the team by e-mail, or post them on a discussion group. If another student leans over your workstation to read what you are doing, tell them to back off, and contact the lab monitor if they persist in trying to read what you are doing.
The only source code or documents written by another person outside your team that you may reuse in a program that you turn in for grade are the following:
Materials I provide for students in this course, this term, in a public forum, provided you clearly identify the material that is reused and where it came from. (Material from other courses, or prior offerings of this course may not be used.)
Material you found in a textbook used in a course you have taken, provided you clearly identify it as quoted and include a citation of the textbook in your comments.
Material you found published on the Internet, provided you mark it clearly as quoted, include the URL in a comment, and the web site where you found it has a clear statement giving permission for anyone to reuse the material.
If you reuse material of type (2) above, limit yourself to comparatively short blocks of quoted material. Excessively long quotations from a textbook may violate the "fair use" provision of the copyright law, and in any case are considered poor academic practice. The same is true of excessively long quotations of text in a research paper. Moreover, the purpose of the assignments assignments in this course is for you to practice your own writing and programming skills. Therefore, you will not get credit for turning in a product that relies on an excessive amount of quoted material.
Failure to follow these rules will be considered a violation of the Academic Honor Code. The first detected violation will result in a negative score, of -100% A second detected violation will result in a grade of "F" for the course, with no possibility of taking the course for grade forgiveness.
|Accommodation for Disabilities|
Students with disabilities needing academic accommodations should:
This syllabus and other class materials are available in alternative format upon request.
For more information about services available to FSU students with disabilities, contact the Assistant Dean of Students:
Student Disability Resource Center
08 Kellum Hall
Florida State University
Tallahassee, FL 32306-4066
phone: (850) 644-9566.
If you are experiencing difficulty or are concerned about your progress, please contact me right away. Problems are usually easier to solve when they are addressed early.
You are required to verify that your e-mail address is included in the class e-mail list. I will send everyone a message at the start of the term. If you don't get that first message, make sure you are added to the list.
Check regularly for electronic mail sent to you containing information about this course. You are also encouraged to use e-mail to ask questions and report problems. As a student in Computer Science you have at least two computer and e-mail accounts:
Because of past problems with impersonation, I cannot reply to e-mails related to this course from other e-mail addresses.
So that you receive all e-mail promptly, you should have set up automatic e-mail forwarding from one of these accounts to the other, or from both of them to whatever other place you normally read e-mail.
This syllabus and other information, such as course announcements, assignments, lecture notes, and some useful links to other web sites, will be posted on the CS Department's web site for the course, which is located at http://www.cs.fsu.edu/~baker/sweng. Access to most of the materials on that site will require a special login name and password, which will I will provide to you via e-mail.
|© 2002 T. P. Baker & Florida State University. (Last updated by $Author: baker $ on $Date: 2003/08/25 14:43:40 $.) No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means without written permission.|