| Assignments | Contact Info |

Advanced Software Engineering I
92720 - CSC 3981N - 0

Copyright © 2002, 2005 -- 2008, 2012 Herbert J. Bernstein and other parties. All rights reserved.

This web page is http://www.bernstein-plus-sons.com/.dowling/CSC3981F12/CSC3981_Syllabus.html


Syllabus

Term: Fall 2012

Instructor:

Office Hours:

Note that, in general, Dr. Bernstein will be at the Brookhaven campus on Tuesday, Thursday and Friday afternoons and at the Oakdale Campus on Wednesday afternoons. If at all possible, please use email to schedule meetings in advance to avoid conflicts with other students and other obligations of the instructor.

For more information see http://www.bernstein-plus-sons.com/.dowling/HJB_Contact_Info.html.

Course Information:

CSC 3981N - Advanced Software Engineering I

A one-year, project-oriented course intended primarily for juniors and seniors in the Computer Science major and for others with solid programming skills and knowledge of data structures. Topics covered include: software requirements analysis, specification, design, implementation, integration testing, life-cycle documentation; project management; and effective oral communication. Students, under the guidance of the instructor, engage in several large, team-based software development projects through the year. Students are expected to be proficient in object-oriented software design and in at least one modern programming language before taking this course. CSC 3981N and CSC 3982N form a two-semester course sequence and must be taken in the same academic year to count for credit towards the Computer Science major. Prerequisites: CSC 2025A or permission of the instructor.

3.000 Credit Hours

OnLine Course 4 Sep 2012 -- 19 Dec 2012

Course Objectives

The primary objective of these courses is to train CS majors with skills in programming to become information technology professionals able to undertake complex development projects in a modern distributed computing environment.

Student Learning Outcomes

Course Outline

The approach is that of a "Lyceum", in which all involved learn together through discussions. The following outline shows some of the major topics to be covered, but is not intended to imply sequential ordering. Of necessity, many threads of the course will overlap throughout the year, and students will assume increasing responsibility for self-directed and collaborative discovery and presentation of topics. If there are not sufficient students in the class to form a workable team, or even if there are, we will try to involve people from putside the class.

Required Texts

I. Sommerville, "Software Engineering, 9th ed.", Addison Wesley Professional, 2010, ISBN-13: 978-0137035151

F. Brooks, "The Mythical Man-Month, 2nd ed.", Addison-Wesley, 1995, ISBN-10: 0201835959, ISBN-13: 978-0201835953

Recommended Text

D. Gustafson, "Schaum's Outline of Software Engineering", McGraw-Hill, 2002, ISBN: 0071377948

Required Materials

Attendance

This is an online class. In general the major risk in taking an online course is in failing to make steady progress through the semester. In the case of softare engineering, failure to make steady progress is a guarantee of failure. Therefore, all students are required both to demonstrate their progress with on-line quizzes and assignments and to attend at least one online meeting every 2 weeks with the instructor to discuss the work they are doing for this class. Students are encouraged to schedule these online meetings in groups via Skype, but they may meet the requirement with individual Skype meetings or by on-site meetings during office hours.

Students who fail to maintain regular contact with the instructor prior to the midterm will get a midterm warning and be advised to withdraw from the course. p>

Grading Policy:

As noted above students will be given weekly quizzes. The weekly quizzes are open-web, open-book, open-notes quizzes, but that won't work in your favor if you don't do the reading.

Every student will be required to maintain a contemporaneous hardbound notebook recording all significant activities related to this course. The notebook should record the major topics discussed, questions about the subject matter of the course and the answers when they are found. You will find a good notebook very helpful in taking the final, but, more importantly, the process of reading and taking detailed notes on what you are reading will help you to learn the material.

In addition to the notebook, you will need an on-line blog and website for this course, both to act as a supplement to the hardbound notebook and to provide a path for the submission of assignments. You may not submit programs as attachments to email. They are not likely to get past the instructor's spam filer. Instead, you should post programs to your web site and send the URL to the instructor.

You are required to do a project to add to your permanent portfolio to complete this course. See the new Dowling College Computer Science Portfolios policy. The portfolio project for this course if to post a significant original project related to the student's track (CS, SE, IS or IT). The individual effort of each student must involve some programming, but each student may make their major effort in whatever project tasks best suit their skills.

You should think terms of a project you would like to show to a prospective employer or graduate school. Your name will be on it, and everybody in the world will be able to see it and try it. Your skills will be on display for everybody to see. Do a good job.

Because of the nature of software engineering, one cannot complete the course without mainatining a current notes. There is no way to make up a failure to maintain a current notebook except by taking the course all over again.

By the end of the course, all students will be expected to display effective problem analysis and programming skills. No project will be considered complete until all students involved show a complete grasp of the tools needed to design and implement the project. All students will be expected to learn how to work with a variety of programming languages and software tools and to be able to work unaided to find, read and understand documentation for packages they have never used before, and then to install and use such packages.

Some students may not have an adequate preparation in programming to undertake the homework assignments and the course project. Many texts are oriented towards java, and java is fast becoming a major production tool. However, many projects require programming in other languages. It is important that students be able to adapt to other languages.