Graduate Certificate in Software Engineering
This certificate is designed for working professionals, or computer science students beginning careers, in the fields of software engineering and software development. This certificate requires a previous computer science or systems engineering degree. At the start of the certificate program students are expected to have a strong understanding of software development in terms of software construction, software coding and basic software design.
To provide working or career-oriented students with knowledge and practice of the applied skills needed to become successful software engineers.
To provide working or career-oriented students with knowledge and understanding of the skills needed to successfully advance their careers as software engineers.
Process to Attain Certificate Objectives
Students will complete a sequence of three separate graduate-level courses
- Software Architecture (CSCI 5010)
- One of the following:
- Operating Systems (CSCI 5573) or
- Advanced Computer Architecture (CSCI 5593)
- Software Project Management Support (CSCI 5011); Prerequisites: CSCI 5010 plus either CSCI 5573 Operating Systems or CSCI 5593 Advanced Computer Architecture
Students must take and pass each course to obtain the Software Engineering Certificate.
This course will focus on two major areas. The first part of the course will cover Software Requirements Analysis and Development as well as Software Architecture and the Soft Skills needed by high level Software Architects. The second part of the course will cover how Persistent Data fits into different types of Software Systems. The primary focus of the second part of the course will be on incorporating larger scale Enterprise Data Systems into Software Systems and will be an application of the first part of the course material. This course will explore:
- Chronic Software Production Problems
- Derived Functional and Non-Functional Requirements
- Problem and Solution Space mapping and complexity
- Architecture (the product) and Architecting (the practice)
- Object and Component based Software Architecture techniques
- Architectural Styles and how to apply them
- Architectural Views and their relationship to Requirements
- Application Data Systems vs. Enterprise Data Systems
- The different Quality Attribute requirements between Application and Enterprise Data Systems
- Software Architectures for Enterprise Data Systems
- Architecting Domain Models for Data Systems
Software Project Management Support
This course will cover Software Planning, Estimation, Staffing and Scheduling. This course will explore:
- Software Work Breakdown Structures
- Software Project Dependencies and Effort Schedules
- Estimation Techniques
- Comparisons between different Project Models (Waterfall, Agile, Iterative, …) and when one might be preferred over the others
This course provides an in-depth study of the principles of computer operating systems and their essential components. Team projects expose students to a variety of system design issues as they relate to the functionality and performance of the system. Topics include I/O devices, Disk Scheduling, File System Organizations, Directory Systems, Sequential and Concurrent process, CPU Scheduling, Memory Management, Deadlock, Process and Threading, and review of some related articles in the literature.
Advanced Computer Architecture
This course covers concepts in the structural design of computer systems important to software designers. Topics include memory hierarchy, super pipelining and super scalar techniques, dynamic execution, vector computers and multiprocessors and performance impacts of software design.