Introduces the concepts and techniques of computer programming. Particular emphasis on computer programming as a problem-solving technique in science and engineering applications. The C language is taught and used for assignments. Good programming style is stressed. Significant out-of-class programming required. Not open to students who have completed CS 407, 415, or the equivalent. Pre- or Coreq: MATH 425.
Currently offered: Fall 2014
Previously offered: Spring 2012, Fall 2012, Spring 2013, Fall 2013, Spring 2014
CS 818 - Software Systems Engineering Process
Contemporary software-intensive systems are distinguished by their complex intellectual content, evolving and changing requirements, difficult technical organizational interfaces, multiple stakeholders with differing perspectives on project objectives, integration intensity, and high customer expectations for systematization robustness. To meet these formidable challenges, this course addresses an interdisciplinary set of processes across the full life-cycle (from concepts to deployment and enhancement) that balances competing technical/management parameters toward a design solution meeting stakeholder needs. Prereq: permission of instructor.
Previously offered: Spring 2012, Spring 2014
CS 823 - Performance Evaluation of Computer Systems
This class introduces the main concepts, techniques, and tools needed to evaluate the performance of computer systems under various configurations and workloads. The techniques allow one to perform capacity planning based on quality of service requirements of users and workload characteristics. The course is mainly based on the use of analytic queuing network models of computer systems. The performance techniques are applied to study the performance of centralized, distributed, parallel, and client/server systems. The course also discusses performance measuring tools for operating systems such as Unix and Windows NT. Prereq: operating systems fundamentals or equivalent.
This course focuses on the skills required to identify, analyze, synthesize, and manage system requirements. It addressed the key requirements gathering and analysis tasks throughout the system life cycle. Participants learn about the requirements process, explore what constitutes good requirements, and understand how requirements are documented. A case study provides practice and feedback on key skills of the requirements process. Techniques and models are introduced that must be considered in defining systems that achieve higher customer satisfaction within constraints. Interpersonal skills critical to interacting with stakeholders (e.g., customers and users) are emphasized coequally with technical issues.
Currently offered: Fall 2014
CS 852 - Software Architecture Concepts
A software architecture concerns the top-level structures of a software system, the externally visible properties of those structures, and their interrelationships. This course examines the role of architecture in satisfying an organization's business requirements. The hard choices that must be made by the architect to fulfill the often conflicting needs of performance , availability, security, interoperability, and modifiability are highlighted. Other topics include representations of architectures, case studies, and the role of architecture in product lines.
Previously offered: Fall 2011, Fall 2013
This course addresses an advanced set of software project management essentials that can affect the bottom line of project technical and business performance. The focus is on larger scale complex projects that a student is likely to encounter in the workplace after 3-5 years of experience. These essentials are termed "best practices, " and those addressed are: formal risk management, agreement on interfaces, metrics based scheduling/tracking, frequent binary completion milestones, incremental development, people aware management style, and change management. The emphasis is on software intensive projects; however, the basic principles are pertinent to a wider class of project domains that involve intellectual product development where problem discovery is a main characteristic.
Currently offered: Spring 2015
Previously offered: Spring 2013
CS 854 - System/Software Test and Evaluation
This course identifies an integrated software test and evaluation process framework that emphasizes a "systems engineering" approach: the validation and viability of customer/user needs statements, verification of system design, full exercise of developmental testing, system integration/test dovetailing on the prior validations, plus evaluation of system quality attributes. This system engineering approach is intended to contain major problems, including interface issues, to phases preceding system test.
Previously offered: Fall 2012