Welcome to CS302: Software Engineering
Specific information about this course and its requirements can be found below. For more general information about taking Saylor Academy courses, including information about Community and Academic Codes of Conduct, please read the Student Handbook.
Learn how to apply an engineering approach to computer software design and development by focusing on topics like life cycle models, software requirements, specification, conceptual model design, detailed design, validation and verification, design quality assurance, software design/development environments, and project management.
Software engineering is a discipline that allows us to apply engineering and computer science concepts in the development and maintenance of reliable, usable, and dependable software. The concept of software engineering was first discussed at the 1968 NATO Science Committee in Germany. There are several areas to focus on within software engineering, such as design, development, testing, maintenance, and management. Software development outside of the classroom is a very complex process, mostly because real-world software is much larger and more complex.
The purpose of this course is to present software engineering as a body of knowledge. The course is designed to present software engineering concepts and principles in parallel with the software development life cycle. The course will begin with an introduction to software engineering, giving you a definition of this body of knowledge, as well as a discussion of the main methodologies of software engineering. You will then learn about the Software Development Life Cycle (SDLC), major methodologies followed by software modeling using Unified Modeling Language (UML), a standardized general-purpose modeling language used to create visual models of object-oriented software.
You will go on to learn about major phases of the SDLC: analysis, design, coding/implementation, and testing. You will also learn about project management for the purpose of delivering high-quality software that satisfies customer needs and is within budget. By the time the course is complete, you will master software engineering concepts, principles, and essential processes of the SDLC. You will demonstrate this knowledge by creating artifacts for requirements gathering, analysis, and design phases using UML.
This course includes the following units:
- Unit 1: Introduction to Software Engineering
- Unit 2: Software Development Life Cycle Models
- Unit 3: Software Modeling
- Unit 4: Software Requirements Gathering
- Unit 5: Software Requirements Analysis
- Unit 6: Software Design
- Unit 7: Implementation
- Unit 8: Software Testing
- Unit 9: Project Management
- Unit 10: Putting It Together: A Case Study
Course Learning Outcomes
Upon successful completion of this course, you will be able to:
- describe the knowledge and skills necessary to practice software engineering, and the professional issues that a software engineer might face;
- use software engineering principles such as separation of concerns, abstraction, and incremental development to develop reliable software;
- differentiate between software development processes and methods;
- create major activities and key deliverables in a software development life cycle, such as use case, class, and sequence diagrams;
- create UML diagrams for software analysis and design by using the object-oriented methodology;
- use project management concepts to manage projects, people, and products; and
- use software engineering concepts to construct quality software systems.
Throughout this course, you will also see learning outcomes in each unit. You can use those learning outcomes to help organize your studies and gauge your progress.
The primary learning materials for this course are articles, lectures, and videos.
All course materials are free to access and can be found in each unit of the course. Pay close attention to the notes that accompany these course materials, as they will tell you what to focus on in each resource, and will help you to understand how the learning materials fit into the course as a whole. You can also see a list of all the learning materials in this course by clicking on Resources in the navigation bar.
Evaluation and Minimum Passing Score
Only the final exam is considered when awarding you a grade for this course. In order to pass this course, you will need to earn a 70% or higher on the final exam. Your score on the exam will be calculated as soon as you complete it. If you do not pass the exam on your first try, you may take it again as many times as you want, with a 7-day waiting period between each attempt. Once you have successfully passed the final exam you will be awarded a free Course Completion Certificate.
There are also end-of-unit assessments in this course. These are designed to help you study, and do not factor into your final course grade. You can take these as many times as you want until you understand the concepts and material covered. You can see all of these assessments by clicking on Quizzes in the course's navigation bar.
Earning College Credit
This course is eligible for college credit via Saylor Academy's Direct Credit Program. If you want to earn college credit, you must take and pass the Direct Credit final exam. That exam will be password protected and requires a proctor. If you pass the Direct Credit exam, you will receive a Proctor Verified Course Certificate and be eligible to earn an official transcript. For more information about applying for college credit, review the guide to college credit opportunities. Be sure to check the section on proctoring for details like fees and technical requirements.
There is a 14-day waiting period between attempts of the Direct Credit final exam. There is no waiting period between attempts for the not-for-credit exam and the Direct Credit exam. You may only attempt each Direct Credit final exam a maximum of 3 times. Be sure to study in between each attempt!
Tips for Success
CS302: Software Engineering is a self-paced course, which means that you can decide when you will start and when you will complete the course. There is no instructor or an assigned schedule to follow. We estimate that the "average" student will take 41 hours to complete this course. We recommend that you work through the course at a pace that is comfortable for you and allows you to make regular progress. It's a good idea to also schedule your study time in advance and try as best as you can to stick to that schedule.
Learning new material can be challenging, so we've compiled a few study strategies to help you succeed:
- Take notes on the various terms, practices, and theories that you come across. This can help you put each concept into context, and will create a refresher that you can use as you study later on.
- As you work through the materials, take some time to test yourself on what you remember and how well you understand the concepts. Reflecting on what you've learned is important for your long-term memory, and will make you more likely to retain information over time.
- Although you may work through this course completely independently, you may find it helpful to connect with other Saylor students through the discussion forums. You may access the discussion forums at https://discourse.saylor.org.
In order to take this course, you should have completed the following courses:
- CS101: Introduction to Computer Science I
- CS102: Introduction to Computer Science II
- CS107: C++ Programming
- CS201: Elementary Data Structures
- CS202: Discrete Structures
- CS301: Computer Architecture
This course is delivered entirely online. You will be required to have access to a computer or web-capable mobile device and have consistent access to the internet to either view or download the necessary course resources and to attempt any auto-graded course assessments and the final exam.
- To access the full course including assessments and the final exam, you will need to be logged into your Saylor Academy account and enrolled in the course. If you do not already have an account, you may create one for free here. Although you can access some of the course without logging in to your account, you should log in to maximize your course experience. For example, you cannot take assessments or track your progress unless you are logged in.
- If you plan to attempt the optional Direct Credit final exam, then you will also need access to a webcam. This lets our remote proctoring service verify your identity, which is required to issue an official transcript to schools on your behalf.
For additional guidance, check out Saylor Academy's FAQ.
This course is entirely free to enroll in and to access. Everything linked in the course, including textbooks, videos, webpages, and activities, is available for no charge. This course also contains a free final exam and course completion certificate.
This course also has an optional final exam that can give you an opportunity to earn college credit. This exam requires the use of a proctoring service for identity verification purposes. The cost for proctoring for this optional exam is $25 per session.