Course Description s41
Total Page:16
File Type:pdf, Size:1020Kb
COURSE DESCRIPTION Course Number CSCI 3308 Course Title Software Engineering Methods and Tools Semester Hours 3 Course Coordinator Amer Diwan Course URL http://www.cs.colorado.edu/courses/csci3308.html
Current Catalog Description Focuses on software engineering methods and tools for application development, including design and system organization; using and creating reusable libraries; building, testing, and debugging; and performance evaluation. Two hours of lecture, three hours of lab per week. Textbook
Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Commonly known as the "Gang of Four" book. Refactoring: Improving the Design of Existing Code, Martin Fowler
References
Instructors (for the last 3 years: Fall 2006 — Spring 2009) Amer Diwan (Fall 2007 and 2008) Kenneth Anderson (Fall 2006) Meeting Times (Number and Duration of Sessions per Week) 2 class periods (50 minutes each), one lab (1:50 minutes) Course Outcomes
This course covers many of the most useful methods and tools currently used in software development. The tools and methods covered in this course are widely used for developing software in industry. Specifically, after taking this course, students will have mastery of:
Software methods, particularly o design patterns o testing techniques (black box and white box) o practices used in agile methods (particularly, test-driven development, refactoring, and pair programming) o text processing (basic parsing), o software profiling/optimization. Software tools, particularly o modern IDEs such as Eclipse o debuggers o testing frameworks o version control systems o build systems (such as Ant). Relationship between Course Outcomes and Program Outcomes Outcomes A. B. C. D. E. F. Apply Computing Design Team Professional Communicate Knowledge Requirements System Work Issues Effectively Design Patterns ✓ ✓ ✓ Testing ✓ ✓ Agile methods ✓ ✓ ✓ ✓ ✓ Text processing ✓ ✓ Software Profiling ✓ ✓ Software tools ✓ ✓ ✓
Outcomes G. H. I. J. K. Analyze Professional Current Design Design & Impacts Development Techniques Tradeoffs Development Design Patterns ✓ ✓ ✓ ✓ ✓ Testing ✓ ✓ ✓ Agile methods ✓ ✓ ✓ ✓ Text processing ✓ ✓ ✓ Software Profiling ✓ ✓ Software tools ✓ ✓ ✓ Prerequisites by Topic CSCI 2270: Data Structures Major Topics Covered in the Course Agile Methods Test development and testing strategies Design Patterns Refactoring Text processing Software Profiling/Optimization Assessment Plan for the Course There are weekly assignments and labs that are all graded. The assignments and labs all use agile practices (e.g., pair programming). The course is structured so that it is as practical and realistic as possible. For example, the course allows students to use whatever resources are available to them in solving the assignments and labs (e.g., doing google searches or asking their friends) as long as they acknowledge any help that they received. There is also a midterm and a final exam. How is Data from this Course used to Assess Program Outcomes? The instructor retains copies of all student homework assignments and labs. Also the instructor retains copies of sample exams (above average, below average, average). These materials are then evaluated by the department’s external advisory board for examples that demonstrate fulfillment of the program outcomes. Curriculum Category Content (Semester Hours) Area Core Advanced Algorithms Data Structures 0.25 Computer Organization and Architecture Software Design 2.25 Concepts of Programming Languages 0.5