scription: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Colorado State University Computer Science Department


CS314 Software Development Methods
Spring 2014


Basic Course Information

Course Structure

Planned Weekly Schedule

Expectations & Policies for Gradable Work

Grading Policies

Important Dates

Links to Related Material

Code of Conduct


Basic Course Information

Instructor: Prof. Robert B. France

email (france at cs dot colostate dot edu)

Tel: 970-491-6356

Fax: 970-491-2466

Lecture Times and Location: M, W, F; 10-10:50AM; Computer Science Building 130.

Office Hours: Mon, Wed 1-2PM 

 

Teaching Assistant (TA): Navini Dantanarayana

Navini's Office Hours: Wed 3-5PM, Thurs 10AM-12PM (Lab)

 

Grading Assistant : Phillipa Bennett

Phillipa's Office Hours: Mon 8-10AM (Lab)

Other Office Hours : Dr. Geri Georg

Dr. Georg's Office Hours: Tues, Thurs 9-11AM

  

Description: The course introduces students to principles, concepts and techniques associated with team-based development of complex software systems. It is assumed that students know how to program in Java and C++ and have very good working knowledge of object-oriented programming using the Java programming language.

 

Prerequisite:  completion of CS253 with a C or better (this is a strict requirement; no waivers)

 

Major Learning Activities: Students in this course will learn to

·      develop and evaluate software requirements and design models,

·      use design patterns to improve designs,

·      systematically test programs,

·      develop informed opinions about software engineering techniques and trends, and

·      work in teams to produce solutions to software development problems.

 

Outside Class Work Expectations: The typical expectation for a college course at CSU is that students will work a minimum of 2 hours outside of class per class credit hour. This 3 credit class will thus require you to work at least 6 hours per week. This includes reading the course slides and related textbook chapters before each class.

 

Learning Resources/Texts:

 

Required Text:

CS314: Object Oriented Software Development; 556 pgs; McGraw Hill, ISBN: 9781121926684. This book is a collection of chapters from the following books:

·      Object-Oriented Software Engineering, Timothy Lethbridge, Robert Laganiere, 2nd Edition, McGraw Hill.

·      Object-Oriented Design Using Java, Dale Skrien, McGraw Hill.

Required Tools:

·      Students must have iClickers to participate in in-class quizzes. iClicker is a response system that allows you to respond to quiz questions posed during class, and you will be graded on these questions. In order to receive this credit, you will need to register your iClicker remote online prior to the second class. To do this, go to http://clicker.colostate.edu/registration.aspx. Login with your eIdentity eName and password. In the iClicker ID field, enter your remote ID and select the "Register" button. The remote ID is the number found on the back of your iClicker remote. iClicker will be used most days in class, and you are responsible for bringing your remote daily. IClicker policy: Any student who misses ONE iClicker quiz will not have that quiz counted in their quiz score, but any subsequent missed quizzes will be treated as scores of 0. Any student who knows they will be absent from class, and who provides adequate reasoning and notification to Dr. Georg at least one class beforehand, may make up any iClicker quiz given in the missed class, up to 1 such absence. Any student who misses an iClicker quiz due to a University-sanctioned absence must notify Dr. Georg with proper documentation; any missed iClicker quiz will be excused and not counted in the overall quiz score.

·      Students will need to have access to UML modeling tools. Students can also use basic computer-based drawing tools to produce software models (creating models using such tools requires more effort). Assignments with hand-drawn models will NOT be marked. Students are strongly enouraged to use the USE (UMLbased Specification Environment) UML modeling tool in assignments that require them to produce models; this is the tool that will be used to produce models in the studios and it runs on any JVM. General information about USE can be found at http://sourceforge.net/apps/mediawiki/useocl/index.php?title=Main_Page and the tool can be downloaded from http://sourceforge.net/projects/useocl/. A study guide for the tool and the features we will use to create requirements and design class models, object model instances, and rudimentary sequence diagrams is under development and will be available soon on RamCT.


Course Structure

The course consists of lectures, problem solving studios, and in class tests and quizzes. There is one final exam. While there are no mid-semester exams, students will be continuously tested via the inclass tests and quizzes. Students can expect that there will be a test or quiz every week.

 

Lectures

Students are expected to read the course slides and related textbook chapters before they come to class. This way they will be prepared with questions about the parts of the content they have difficulty with. Lectures will cover the following major topic areas: Software Testing, Requirements Modeling using Class Models and Use Cases, Object-Oriented Design Modeling using UML Design Class Models and Sequence Diagrams, and Design Patterns.

 

Problem Solving Studios

Problem solving studios give students an opportunity to relate concepts covered in course slides and the textbook to software development practices. In a studio, groups of students will work in groups (4 to 5 students per group) on problems given by the lecturer. Students must attend the studio class and submit solutions they develop in a studio by the deadline date for each studio in order to obtain a grade for the studio.

 

Exams

There will be only 1 exam, a final exam held during the university’s exam week. The exam will be comprehensive and will be closed-book, closed-notes. The final exam will be held in the classroom assigned to this course.

 

Assignments

There will be four programming assignments. Students must work in their teams of 4 to 5 persons on each assignment. All assignments must be handed in by the due dates. No late submissions will be allowed.

 

In-class Major Tests

At the end of each major course section an in-class major test will be given. A total of 5 will be given and they will each be worth 5% of the final grade.

 

In-class Quizzes/Exercises

Exercises and quizzes serve two purposes: (1) to gauge  student understanding of concepts covered in course slides and textbook chapters, and (2) to help students prepare for the major tests and final comprehensive exam. All exercises/quizzes will be in class. Students can expect an in-class exercise/quiz at least once a week. Points will only be given to students who attempt nearly all exercises and quizzes. For a student to get points they must have missed no more than 3 exercises/quizzes in the semester.

 


Planned Weekly Schedule

The planned course schedule is given below. Please note that this is a plan; details may change during the semester. A more accurate weekly schedule will be maintained on RamCT once the semester starts.

 

The book chapter numbers given in the table below are the chapters of the compiled version of the book. These are NOT the chapter numbers of the Skrien or Lethbridge books. Visit the RamCT Course Content page to see a mapping of the compiled book chapter to the chapters in the Skrien and Lethbridge books.

 

 

Week

Topics & Class Activities

1 Jan 20 (Intro)

Lectures:

CS314 Course Intro

Introduction to Software Engineering

 

 

Chapter: 1

 

Major in-class tests:

Assessment quiz (Friday)

2 Jan 27 (Testing)

Lectures:

Software testing principles

White box testing; black box testing

3 Feb. 3 (Testing)

Studio 1: JUnit tutorial, testing exercises

 

Major in-class test:

Major Test 1 (Friday) - Software Testing

4 Feb 10 (Requirements)

Lectures:

Modeling functional requirements with class models and use cases

 

Course Text Chapter: 12

 

Assignment 1 Due: Midnight Feb. 14, 2014

5 Feb 17 (Requirements)

Studio 2: Requirements modeling exercises

 

Major in-class test:

Major Test 2 (Friday) – Requirements modeling

6 Feb 24 (OOP)

Lectures:

OOP Inheritance

OOP methods & classes

 

Chapters: 2, 3, 4, 5, 6

 

Additional Material

OOP Fundamentals (these slides will not be presented in class; students must cover these in their own time and come prepared with questions in class):

 

 

 

7 Mar 3 (OOP/Design)

Lectures:

Design principles

Design refactoring

 

Chapters: 13 (9.1, 9.2), 7 (5.9, 5.10)

 

Studio 3: OOD exercises

 

Assignment 2 Due: Midnight Mar. 7, 2014

8 Mar 10 (UML Design)

Lectures:

Design class models

Sequence diagrams

 

Chapters: 7, 8

 

Major in-class test:

Major Test 3 (Friday) – OOD

9 Spring Break

No classes

10 Mar 24

(Design modeling)

Bonus Studio Mon: Resumption Strategy Workshop, Noah John, HCI student

 

Studio 4: OO Design Modeling exercises

11 Mar 31 (Design Patterns)

Lectures Mon, Wed:

Design patterns – singleton, factory patterns (creational patterns)

 

Chapters: 9, 10

 

Bonus Studio Fri: Dr. Jaime Ruiz, HCI

 

Assignment 3 Due: Midnight Apr. 4, 2014

12 Apr 7

(Design Patterns)

Lecture:

Design patterns – finish creational patterns, begin Adapter, Façade, Iterator, Observer (structural & behavioral patterns)

 

Chapters: 9, 10, 11

 

Major in-class test:

Major Test 4 (Friday) – Design Modeling

13 Apr 14 (Design Patterns)

Lecture:

Design patterns – finish structural & behavioral patterns

 

Chapters: 9, 10, 11

14 Apr 21 (Final Assignment wrap-up)

Studio 5: Assignment 4 wrap-up

 

Assignment 4 Due: Midnight Apr. 25, 2014

15 Apr 28

Studio 6: Design patterns exercises

 

Major in-class test:

Major Test 5 (Friday) – Design Patterns

16 May 5

Final exam review

17 May 14

Final Exam: 4:10PM-6:10PM

 


Expectations & policies for gradable work and teamwork

Major tests, final exam:

There will be 5 major tests and 1 final exam in this course. Each will be held in the lecture classroom.

·      The final exam and tests are closed book and closed notes.

·      There will be no make-up exam and tests (unless there is a medical emergency or a university sanctioned event that prevents you from attending the test or exam).

·      A student caught cheating on an exam or test will receive 0 points for the exam/test and be reported to the university.

·      Exam  and test grades will not be curved.


Assignments:

·      Late submissions are not allowed.

·      A team/student caught cheating on any assignments will be given a 0 for the assignment and will be reported to the university.

·      All assignments must be submitted via RamCT by the due date and time (typically midnight on a Friday).

·      Assignment grades will not be curved.

·      Programs will be executed on the Linux machines in the open lab. Make sure your code runs successfully on those machines. Your grade will include points for correctly executing multiple test cases, employing good OO style, and commenting appropriately.

·      Do not expect the provided problem descriptions (the requirements) to be complete. An important skill that we would like you to develop in this course is the ability to analyze stated requirements to identify missing and inconsistent requirements (real-world requirements of non-trivial systems are rarely stated initially in a complete and consistent manner!).

·      Do not make assumptions about what is required in an assignment – if you identify problems in the requirements you will need to ask questions to clarify the requirements.

·      For programming assignments you are expected to practice defensive programming, that is, your program should be robust enough to tolerate errors introduced by users. For example, you should not assume that a user will always provide correct inputs to the program, and you must provide feedback to the user that clearly identifies the errors made.


 

Problem Solving Studios: Students will work in teams on a problem in classes that are designated as design studios. To get points for a studio, each group must submit a solution to the problem by the deadline date for the studio. A role call will be made at the start of each studio. In addition to solution submission, students must be present in the studio class to receive credit for the studio.

 

Team Work:

Students must work in teams on the assignments and design studio problems. All team members involved in the preparation of a final submission of an assignment and a design studio solution will get the same points. Team member involvement is indicated by listing team member names on the final submission. A team can “fire” a team member if he/she is not pulling their weight. A “fired” team member should not be listed as a contributing member in the final submission. The firing of a team member must be approved by the lecturers. If a team member is to be fired, the team is required to send an email to cs314@cs.colostate.edu explaining the reasons for the firing. A fired team member can choose to do the assignment or studio on his/her own or find another team. Each team member will be required to submit a review of each team member to cs314@cs.colostate.edu after the submission of each assignment and design studio solution. These reviews will be used to determine the Team Participation grade.


Grading and Cheating Policies

Points will be allocated as follows:

·      Assignments   30%

·      Assignment 1: 4%

·      Assignment 2: 8%

·      Assignment 3: 8%

·      Assignment 4: 10%

·      Problem Solving Studios 10%

·      Team Participation 5%

·      In-class Major Tests   25%

·      Exercises/quizzes 5%

·      Final exam   25%

 

Letter Grading Scale

Your letter grade will be based on the total percentage points you gain. Letter grades will be assigned as follows:

·      A: 100-90%

·      B: 80-89.9%

·      C: 70-79.9%

·      D: 60-69.9%

·      Fail: Below 60%

The instructor reserves the right to drop the lower bounds in the grading scale.

 

The Grading Process

The teaching assistant (TA) will grade all assignments. If you find a discrepancy in the grading talk to the TA first, and then to the professor if there is a disagreement.

We will try our best to return assignments within 5 working days after the due date. Grades will be posted to RamCT as soon as they are available.

Tests and the final exams will not be curved. Bonus questions will be given on tests, and other opportunities in the form of bonus tests and quizzes may be provided during the semester.

 

Cheating Policy


Important Dates

 

Jan. 21

Classes begin at CSU, Access to RamCT for CS314 opens

Feb. 7

Major Test 1

Feb. 21

Major Test 2

Mar. 14

Major Test 3

Mar. 24

Last day for course withdrawal

Apr. 4

Major Test 4

Apr. 25

Major Test 5

May 9

Last Day of Classes at CSU

May 14

Final Exam; 4:10PM-6:10PM


Links to Course Materials

Links to related materials on the web.  

·      Software lifecycle models from Softpanorama: Useful information on software process models

·      Scrum: Scrum is an agile process. While you will not follow a strict Scrum process in this course for assignments some of the team meeting requirements and the organization into time-boxed iterations is based on agile processes such as Scrum.

·      OMG UML Resource Page: Contains articles and tutorials on the UML.

·      Patterns Home Page: Information about software patterns. Includes links to implementations of patterns (including Gang of Four patterns).


Code of Conduct for the Department of Computer Science

In addition to responsibilities enumerated in the Colorado State University Student Conduct Code, the Computer Science Department advocates rights and responsibilities of conduct for all its Members: faculty, staff and students, in accordance with the intent of the Code of Ethics of the Association of Computing Machinery. In particular, all department members are obligated to

  1. Respect the rights of others and protect fundamental human rights including respect of the diversity of all cultures, and to foster a safe and comfortable social environment.
  2. Avoid harm to others:
    1. All members are expected to treat one another with professional courtesy at all times. Harassment or humiliation of one member by another will not be tolerated.
    2. Members will dress appropriately for an educational and professional setting, refraining from modes of dress that may shock or disturb others.
    3. Members will refrain from using offensive or abusive language.
    4. Members will refrain from offensive public displays, including on computer monitors, wall posters, or engaging in overt public disturbances.
  3. Be honest and trustworthy:
    1. Members will relate honestly with one another, will not submit work that is not their own (unless properly cited), will keep their promises, and will act to merit the trust of others.
    2. Members should adhere to the ACNS policy on acceptable use of computing resources.
  4. Be fair and take action not to discriminate:
    1. Members will treat others fairly, evenhandedly and without capriciousness. a. Members will not single out any other Members or groups of Members for discrimination or criticism or unwelcome treatment especially based on race, physical characteristics, age, gender, religious convictions, or membership in any cultural group.
  5. Honor property rights:
    1. Members will respect the personal property of others.
  6. Give proper credit for intellectual property:
    1. Members will respect the work product of others, and will never claim ownership of intellectual work of others as their own.
  7. Respect the privacy of others:
    1. a. Members will respect the rights of others to be left alone, and will refrain from unwelcome actions towards them, and unwanted intrusions into their affairs.

For questions, explanations, or to report violations, contact your instructor or appropriate department administrator. Mediation of violations will be conducted within the Department and may be referred to the CSU Student Conduct and Conflict Resolution Office.