University of Michigan-Dearborn [http://www.umd.umich.edu] Winter, 1997 Department of Computer and Information Science (313) 436-9145 http://www.engin.umd.umich.edu/~engweb/CIS/cis-homepage.html 134 ELB Professor Ken Modesitt Office Hrs: 3:30 MW+appt. http://www.cis.umd.umich.edu/netforum/cis375w97/a/1 Modesitt@umich.edu COMPUTER AND INFORMATION SCIENCE 375 INTRODUCTION TO SOFTWARE ENGINEERING 4:30 p.m. - 6:00 p.m. MW 1211 Mardigian Library (Distance Learning Classroom) Texts: Classical and Object-Oriented Software Engineering (3rd Edition) by Stephen Schach, Irwin, 1996. (Required) Software Engineering: A Practitioner's Approach (4th Edition). by Roger Pressman, McGraw-Hill, 1997. (Optional) Course Description [Also see official one on CIS home page] This course presents an in-depth treatment of many software engineering topics including: software engineering paradigms, requirements specification, functional design, object- oriented design, software verification, and maintenance. Comprehensive discussion of human-computer interaction and user interface design. 3 hours credit. Prerequisite: CIS 350 -- Data Structures and Algorithm Analysis Goals "Build useful and reliable software more quickly and cheaply -- faster, cheaper, better!" The objectives of this course, upon completion, are to: 1. possess positive interdependent -- collaborative team -- skills 2. add skills missing from earlier courses, where the back-end of the software lifecycle was emphasized 3. gain an appreciation of why the object-oriented paradigm is gaining favor, and also understand the importance of knowing/using classical methodologies 4. introduce front-end skills (needs assessment, customer interaction, estimation, analysis, design, analysis-to-design) 5. have extensive hands-on CASE experiences 6. demonstrate the vital importance of frequent customer interaction 7. exercise communication skills extensively, esp. when presenting new material to class! 8. emphasize the many aspects of software quality 9. practice time management skills 10. make extensive use of library resources, including the Internet 11. develop deliverable products which add real value to real customers 12. MAKE MISTAKES AND LEARN FROM THEM! Cognitive Domain [A more detailed listing uses Bloom's taxonomy*] 1. Knowledge - The student will be able to define, recognize, and recall concepts related to software engineering. See attached list for a partial set of terms from the text and other sources. - The student will be aware of existing products which address the above concepts and other productivity tools. 2. Comprehension - The student will be able to compare and contrast major concepts related to software engineering, esp. as they compare to programming and computer and information science. 3. Application - The student will be able to apply methodologies and existing tools for the modern Software Life Cycle (SWLC), including the Software Development Life Cycle (SDLC). 4. Analysis - The student will be able to analyze a customer's need, and the proposed solutions, designs, quality, implementation, testing procedures, and documentation of their own and others. 5. Synthesis - The student will be able to construct a useful requirements analysis, design, testing procedure, maintainable code product, and management plan for a customer's problem. 6. Evaluation - The student will be able to evaluate various student products, including analyses, designs, testing procedures, implementations, problems, applications, physical products, professional articles, commercial products, and performance of teammates. * Bloom, B., et.al., (eds) Taxonomy of Educational Objectives, Handbook I Cognitive Domain. David McKay, New York, 1956. [See attached] Affective Domain - The student will communicate, formally and informally via oral and written means, to peers and the instructor, at least. There may be similar communication with an external customer. - The student will actively participate as a member of a variety of different teams with different roles, e.g., design, programming, quality assurance, project management. Non-Goals!! Professor "reading" text to students Methodology 1. Syllabus (see attached) 2. Homework, quizzes, examinations, logbook 3. Presentations by instructor, students, and invited guests 4. Projects individual collaborative efforts using teams (to reflect the "real-world" of software development) 5. Resources PEOPLE: peers, instructors (course plus others), CIS Professional Advisory Board members, CIS 200 class (for contracting out coding), CIS 495 class (for being contracted by) TOOLS: programming languages, computer equipment, Internet, WWW, Computer-Aided Software Engineering (CASE) tools, Knowledge-based systems (KBS), computer-based learning systems, Desktop Video Conferencing (DVC) OTHER: books, journals, popular magazines, vendor literature, library (Computer Selects on CD-ROM), video tapes, professional organizations (ACM Special Interest Group on Software Engineering -- SIGSOFT, Software Engineering Institute -- SEI, Software Productivity Consortium, IEEE, etc.) 6. Record of this class (netforum URL on first page) Style of Course The intention of this course is to provide excellent learning opportunities for you, not for me to "teach." Your learning is considerably more important than my teaching! Consequently, this will not be a lecture-based course (only 5% retention by students). Software engineering (and new material in general) is best learned by doing (75% retention rate), so you will involved in LOTS of doing this term. There is even a higher retention rate when teaching others (80%), so you will also be helping your fellow students (and professor) learn. Considerable use will be made of "just-in-time" learning when you are involved in the various projects. You will also be doing a sizable amount of technical reading, since I do not plan to "read to you." This course will also be very much of a project-oriented course involving considerable teamwork, just as in industry. The days of the "Lone Ranger" guru have been gone for several decades in most places. Specific attention will be devoted to teams and how they interact. Why? Because it has been shown, time after time, that the single biggest factor for software productivity is the way in which a team collaborates. So you will know all of your classmates quite well before long! Several of these projects, if not most, will be ones on which you have input. Finally, you will note that ethics and professionalism do not have a "day" devoted to them in the syllabus. That is because these issues will permeate the course. There is a discussion data base on the CIS home page to which all of you will contribute. Such issues will not be "academic" ones to you by the end of the course -- you will be practicing them on a weekly basis. Evaluation Continual for both professor and student with built-in checkpoints. Student homework exams/quizzes projects final course (% of total) 10% 15% 60% 15% 90.0 - 100 = A 80.0 - 89.9 = B 70.0 - 79.9 = C 60.0 - 69.9 = D <60.0 = E Quizzes: Usually prior to a chapter (in-class, open notes, closed book) Normally given prior to classroom discussion: really a "pre-quiz" Exams and final: may include take-home component as well as in-class one. Professor mid-course and end of term using free-form, MECCA model, UM-D form Late Grading Policy On-time One class day late Two > Two Full-credit 80% 50% 0% Attendance Policy I assume you are here to learn by whatever legitimate means you can. I am here to help you to the best of my ability. If you do not come to class, I am much less likely to be able to help. Positive attitudes toward attendance and the classroom are desirable. The Learner's Responsibility " In any classroom, the final responsibility for learning rests squarely on the learner. It can never be otherwise. We who are in faculty or administrative roles have the obligation to try to provide the best possible environment for learning. We can try to motivate, try to encourage, and try to assist, but we cannot learn for the student. Let us be equally candid on another point. If a student failure occurs, the quick response all too frequently is to blame those who try to help -- a president, a dean, the staff, or the faculty. This search for a scapegoat blurs the essential idea that the learner is a partner in the educational experience and bears the ultimate responsibility for success or failure." [Dr. Harold L. Enarson, Former President, Ohio State University]