CS 7140: Advanced Software Engineering |
[3 Credit Hours] This course covers advanced topics in software engineering. Aspects of problem specification, design, verification, and evaluation are discussed. We will focus on design methods, including software patterns and software architecture, plus some advanced topics involving formal methods of software specification or evaluation using software metrics. Students will participate in team projects to apply the methods discussed. Prerequisites: CEG 4110 or CEG 6110 Introduction to Software Engineering.
Concepts of software engineering. Analysis, design, and implementation of software engineering concepts that comprise structured programming and design. Case studies serve as examples illustrating the software life-cycle model. Prerequisites: CS 3100
Study of the implementation of data structures and control structures in professional computer programs. Introduction to the fundamentals of complexity and analysis. Study of common standard problems and solutions (e.g., transitive closure and critical path). Emphasis on high-level language software design. Prerequisites: CS 1181 and MTH 2530 and MTH 2570
Ignore the CS/CEG prefixes. Without the above two courses CEG 4110 or CEG 3110 (or their equivalent) you will find this course near impossible. It is also expected that you are (i) fluent in Java and/or C++, and (ii) comfortable developing programs using Eclipse, Netbeans, or Intellij Idea.
The following is tentative. The order of topics will be roughly as indicated, except for project related discussions. The numbers in parentheses at the end of each topic is an estimate of the number of (75-minute) lectures I intend to devote. I lecture on only the conceptually difficult sections, leaving the rest as reading assignments.
Be aware of https://www.wright.edu/coronavirus website content. Our lectures are asynchronous. Per week, you are expected to watch two lecture videos (75 min each) and study the associated lecture notes. Visit the Course Home Page at least once a week.
Please participate in the class room discussions. Feel free to discuss openly, to ask what may appear to be dumb questions, and to catch any errors that I make. Be alert, study the backup material right away, and solve the exercises promptly.
There is a local discussion group (see the link on the course home page) that you should read and participate regularly as a vehicle for discussing your solutions. I will read this group regularly, and note silently who is contributing what. I expect other students to be able to find flaws and fix them. Only when the most fundamental errors are being made will I break my silence and contribute a response.
There will be two exams contributing 20% plus 25% to the final grade. The date for the mid-semester exam will be announced in class. The date for the final exam is as set by the Registrar. Both exams are closed-book, and comprehensive.
Project work in this course is done by small teams (of perhaps 3 or 4 students). You will be given the source code files of a working program written in either C++ or Java. You will be asked to critique it and make various improvements. There are 6 tech reports (Requirements, Specifications, Design, Implementation, Testing, and Final Report), 5% each, due at various stages of the project. The due dates are on the course home page. A description of the project will be announced later.
There are two homework assignments, each 10%. These are to be done individually. The homework will be given piece meal and it is expected that you will work on them as and when given without waiting for a due date. The eventual due date will be announced on the course home page.
There is a penalty of 5% per day, Sat, Sun counted, for late submissions. Five days after the due date no submission is accepted.