CS 216 - Introduction to Software Engineering
Credits: 3
Course Description
Software engineering topics to include: life cycles, metrics, requirements specifications, design methodologies, validation and verification, testing, reliability and project planning. Students will study and practice use of object-oriented design techniques and software tools in a modern development environment. Implementation of large programming projects will be stressed.
Prereqs: CS-215
Needed Skills
Understanding of basics of data types and data structures. Ability to use a modern, object-oriented programming language.
Learning Outcomes
The students will reach mastery in programming in a modern object-oriented programming language. (Except in exceptional circumstances the same language used in CS 115, CS 215.) There will be a review and extension of some of the advanced topics from CS 215. Emphasis will be on larger projects and tools used in management of large projects. Students learn to develop programs in the Unix/Linux environment, and for the Internet. Students will be introduced to an interpretive programming language.
Students will become proficient in:
· programming in a modern object-oriented language
· designing, implementing and testing large projects
· developing programs in the Unix/Linux environment
· using an interpretive programming language
Students will become familiar with:
· the software life cycle and software economics
· methodology of software development for large projects
· developing programs for the Internet
Measures
Student mastery of course outcomes are evaluated by:
1. Homework assignments
2. Exams
3. Program assignments
4. Final exam
The homework assignments and exams cover topics of the course covered up to the time that they are given. The program assignments build on each other so that by the time of the last assignment, the student develops a large program with multiple components. The final exam is comprehensive, covering all the topics of the course. The student self-assessment of the course outcomes is measured by the CS216 course evaluation questions included in the university course evaluation at the end of the semester.
Choice of the Language
Any modern, structured, object-oriented programming language that is a suitable vehicle to teach problem solving, solution design, and programming engineering can be used in this class. However, the same programming language ought to be used in the sequence CS-115, CS-215, and CS-216.
CAC Categories
Topic
|
Core
|
Advanced
|
Math
Fundamentals
|
0
|
0
|
Data
Structures
|
5
|
0
|
Algorithms
& Software Design
|
15
|
0
|
Computer
Organization and Architecture
|
2
|
0
|
Concepts
of Programming Languages
|
22
|
0
|
Social
and ethical issues
|
1
|
0
|
Total
|
45
|
0
|
Data structures (5): Use of linked lists, queues, tables, databases in programs
Algorithms and software design (15): Software engineering concepts, Software design techniques of multiple languages, Software tools, Software requirements and specifications, Software testing techniques
Computer organization and architecture (2): Computer architecture, Operating systems basics, Machine level representation of data
Concepts of programming languages (22): Advanced C++ concepts, Programming with an interpretive language (Perl), Web programming (XML, HTML, cgi scripts, introduction to Java), Fundamental programming constructs, Overview of programming languages, Declarations and types, Object-oriented programming
Social and ethical issues (1): History of Computing, Professional and ethical responsibilities
Oral communication
none
Written communication
5 program assignments of increasing complexity using shell scripts, C++, Perl, cgi scripts and web programming
5 homeworks (4-5 pages) - None of these are graded for grammar
Coverage
Theoretical content: 20%
· Fundamental programming constructs
· Algorithms and problem-solving
· Fundamental data structures
· Overview of programming languages
· Declarations and types
· Object-oriented programming
Problem analysis: 30%
· Students formulate designs for five program assignments using different languages and environments, of increasing difficulty that may use previous assignments
Solution design: 40%
· Create programs from their design for five program assignments using multiple languages and environments
Other: 10%
· Administration, exams, etc.
Student evaluation and feedback
Homeworks are graded (comments added as deemed necessary to clarify the grade), and the correct answers are available from the class web page. The instructor is available to clarify any homework question.
For program assignments, the student submits his or her solution electronically via the class web site. Besides the description of the program assignment, a grading sheet is provided online so that the student knows the criteria used in grading the assignment. The grader fills in the grading sheet, deducting points when needed. When it is not clear why points were deducted, the grader writes comments in the source code or on the grading sheet. After assignments have been returned to students, the instructor is available to explain any program deficiencies.
After exams are graded and returned to students, the exam answers are provided online. The instructor (or teaching assistant) goes over any questions that the students want to review, either in class (if of a general nature), or personally with the student.
Student grades are available online from the class web site. To ensure privacy, each student is given a unique random number (not the university student number) that is used to access the student’s grades.
Course Evaluation Questions
37. I can use the Unix environment for program development.
38. I have confidence in my ability to solve programming problems using an object-oriented language.
39. I have confidence in my ability to solve programming problems using an interpretive language.
40. I understand the fundamentals of Internet programming.
41. I have confidence in my ability to develop and test large programs.
Possible Textbooks
Paul Anderson
Just Enough Unix
McGraw-Hill Publishing Company
Chris Bates
Web Programming
Wiley Publishing Company