Department Chair: Christian Duncan, 203-582-3817
The Department of Computing prepares students for careers that allow them to change the world for the better. The challenges of the 21st century for both the U.S. and the world are great, but for software engineers and computer scientists, they offer exciting challenges and a world of possibilities. Our programs are aimed at developing creative problem solvers, who learn math, science and fundamentals so that they can apply them in solving the ever-changing problems of tomorrow. Our emphasis on application and learning by doing, all in a small class setting, prepares our graduates to successfully enter the workforce or pursue further education.
Accreditation
The Software Engineering program is accredited by the Engineering Accreditation Commission of ABET, https://www.abet.org, under the commission’s General Criteria and Program Criteria for Software and Similarly Named Engineering Programs.
The BS in Computer Science program is accredited by the Computing Accreditation Commission of ABET, https://www.abet.org, under the commission’s General Criteria and Program Criteria for Computer Science and Similarly Named Computing Programs.
Computer Science (CSC)
CSC 105. Computing: Multidisciplinary Approach.3 Credits.
Computation is an increasingly important problem-solving tool in any discipline as the amount and variety of available information rapidly grows. This course is an introduction to computer programming and computational problem solving explored within the context of various application domains. Students will solve interesting problems taken from disciplines across campus as they develop their programming skills. This course is open to everyone. Although only a tool for exploration, the programming language used will be a current popular language such as Python.
Prerequisites: None
Offered: Every year, Fall and Spring
UC: Breadth Elective
CSC 106. Introduction to Programming for Engineers.3 Credits.
This course serves as an introduction to computer science and computer programming for engineers. Topics include fundamental programming constructs, problem-solving techniques, basic data and control structures, and simple data structures and arrays. This course is for non-CSC and non-SER majors.
Prerequisites: None
Offered: Every year, Fall and Spring
CSC 107. Structured Programming Techniques.1 Credit.
The main purpose of this course is to fill any gaps between Programming and Problem Solving course (CSC 110) and the Introduction to Programming for Engineers course (CSC 106). Topics include a basic programming refresher (in Java), binary number representation, debugging strategies and simple recursion.
Prerequisites: Take CSC 106; Minimum grade C-.
Offered: As needed
CSC 109. Special Topics.3 Credits.
Prerequisites: None
Offered: As needed, All
CSC 110. Programming and Problem Solving.3 Credits.
This course serves as an introduction to computer science and computer programming. Topics include fundamental programming constructs; problem-solving techniques; basic data and control structures; testing; debugging; arrays; and an introduction to object-oriented programming. A lab is included.
Corequisites: Take CSC 110L.
Offered: Every year, Fall and Spring
CSC 110L. Programming and Problem Solving Lab.1 Credit.
Students gain experience in the practice of programming and problem solving by completing a series of hands-on activities, which increase in complexity, covering a range of topics from the CSC 110 course. This course is taken in conjunction with CSC 110.
Corequisites: Take CSC 110.
Offered: Every year, Fall and Spring
CSC 111. Data Structures and Abstraction.3 Credits.
This course is a continuation of CSC 110. Topics include advanced data structures (linked lists, stacks, queues, trees, hash tables), recursion, abstract data types, introductory algorithms, and intermediate object-oriented programming. A lab is included.
Prerequisites: Take CSC 110 and CSC 110L; or CSC 107 with program director approval; Minimum grade C-.
Corequisites: Take CSC 111L.
Offered: Every year, All
CSC 111L. Data Structures and Abstraction Lab.1 Credit.
Students gain experience in data structures programming by completing a series of activities, which increase in complexity, covering a range of topics from the CSC 111 course. This course is taken in conjunction with CSC 111.
Prerequisites: Take CSC 110 and CSC 110L; or CSC 107 with program director approval; Minimum grade C-.
Corequisites: Take CSC 111.
Offered: Every year, All
CSC 125. Intro to Version Control and Collaboration Strategies.1 Credit.
This course covers supplemental material that goes hand-in-hand with developing software programs. Topics include using version control to manage software, strategies for collaborating with other developers while working on a joint project, and using various platform specific tools. Prior programming experience is expected. This course does not count as a CSC elective.
Prerequisites: Take at least one of the following: CSC 105, CSC 106, CSC 107, CSC 110, GDD 140, or permission from program director.
Offered: Every year, Spring
CSC 150. Elements of Artificial Intelligence.3 Credits.
This course provides a broad exposure to artificial intelligence, including its history and current usage. Students will learn about the growth of artificial intelligence from the early days of computing up to the current state-of-the-art systems that they interact with daily, sometimes without even realizing it. Case studies will be used to consider how AI systems are used in a variety of disciplines. Some programming is required so that students can explore the AI algorithms in sufficient detail.
Prerequisites: Take CSC 105 or CSC 110 and CSC 110L or equivalent.
Offered: Every year, Spring
CSC 175. Introductory Topics in Computer Science.1-3 Credits.
This course explores introductory computer science topics not available in other courses as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary. This course does not count as an elective in the major.
Prerequisites: Take CSC 110 CSC 106 or GDD 140; Minimum grade C-;
Offered: As needed
CSC 205. Introduction to Discrete Mathematics (MA 205).3 Credits.
This course introduces students to basic concepts and structures of discrete mathematics. Topics can include propositional and predicate logic, sets and set operations, functions, proof techniques, counting problems, probability and basic number theory. Applications include computer science, biology, social sciences, law and the physical sciences.
Prerequisites: Take CSC 110, CSC 110L or MA 110 or higher; Minimum grade C-.
Offered: Every year, Spring
CSC 210. Digital Logic and Design.3 Credits.
This course introduces the fundamentals of digital logic and design, which serves as the basis of computer architecture. Students will learn about number systems, applied Boolean algebra, and analysis and design of combinational and sequential circuits. Digital tools will be used to build, simulate, and analyze digital designs.
Prerequisites: Take CSC 111 CSC 111L.
Corequisites: Take MA 205.
Offered: Every year, Spring
CSC 215. Algorithm Design and Analysis.3 Credits.
This course presents a study of the design and analysis of algorithms. Topics include asymptotic analysis, complexity theory, sorting and searching, underlying data structures, recursion, greedy algorithms, divide and conquer, dynamic programming, and NP-completeness. Additional topics may include graph algorithms, probabilistic algorithms, distributed computing and parallel algorithms.
Prerequisites: Take CSC 111, CSC 111L; and CSC 205 or MA 205; Minimum grade C-.
Offered: Every year, Fall
CSC 225. Introduction to Software Development.3 Credits.
This course presents introductory software development concepts including group development, large-scale project work and theoretical aspects of object-oriented programming. The course expands on material from previous courses. Professional behavior and ethics represent an important component of this course.
Prerequisites: Take CSC 111 CSC 111L; Minimum grade C-.
Offered: Every year, Fall
CSC 240. Introduction to Computer Security.3 Credits.
This course introduces the general principles of computer security from an applied perspective. Topics covered include various forms of physical and cyber attacks, recognizing and defending against machine and network vulnerabilities, the basic building blocks of secure systems, basic cryptography and the social aspects of security.
Prerequisites: Take CSC 111, CSC 111L; Minimum grade C-.
Offered: As needed
CSC 275. Topics in Computer Science.1-3 Credits.
This course explores general computer science topics not available in other courses as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary.
Prerequisites: Take CSC 111; Minimum grade C-;
Offered: As needed
CSC 300. Special Topics.3 Credits.
Prerequisites: Take CSC 215.
Offered: As needed, All
CSC 310. Operating Systems and Systems Programming.3 Credits.
Students are introduced to operating systems and the software to support these systems. Topics include operating system principles, concurrency, scheduling and dispatch, virtual memory, device management, security and protection, file systems and naming, and real-time systems.
Prerequisites: Take CSC 111, CSC 111L; Minimum grade C-.
Offered: Every year, Fall
CSC 315. Theory of Computation.3 Credits.
This course provides an introduction to the classical theory of computer science. The aim is to develop a mathematical understanding of the nature of computing by trying to answer one overarching question: "What are the fundamental capabilities and limitations of computers?" Specific topics include finite automata and formal languages (defining a model of computation), computability (determining what can be computed and how to prove that something cannot be computed), and complexity (determining what makes some problems so much harder than others to solve, and examining what is the P versus NP question and why it is it important).
Prerequisites: Take CSC 215 or MA 301; Minimum grade C-.
Offered: Every other year, Spring
CSC 318. Cryptography.3 Credits.
Students study methods of transmitting information securely in the face of a malicious adversary deliberately trying to read or alter it. Participants also discuss various possible attacks on these communications. Students learn about classical private-key systems, the Data Encryption Standard (DES), the RSA public-key algorithm, discrete logarithms, hash functions and digital signatures. Additional topics may include the Advanced Encryption Standard (AES), digital cash, games, zero-knowledge techniques and information theory, as well as topics chosen by the students together with the instructor for presentations.
Prerequisites: Take MA 229 or CSC 215; Minimum grade C-.
Offered: Every other year, Spring
CSC 320. Compilers.3 Credits.
This course presents a study of the design and implementation of compilers. Topics include translators and compilers, lexical analysis, syntax analysis and parsing, runtime environments and code generation.
Prerequisites: Take CSC 210, CSC 215, SER 225; Minimum grade C-.
Offered: Every other year, Spring
CSC 325. Database Systems.3 Credits.
Students are introduced to the theory and application of database systems. Topics include data modeling and the relational model, query languages, relational database design, transaction processing, databases and physical database design.
Prerequisites: Take CSC 215 and; CSC 225 or SER 225; Minimum grade C-.
Offered: Every other year, Fall
CSC 340. Networking and Distributed Processing.3 Credits.
This course introduces students to net-centric computing, the web as an example of client-server computing, building internet and web applications, communications and networking, distributed object systems, collaboration technology and groupware, distributed operating systems and distributed systems.
Prerequisites: Take CSC 215, CSC 225; Minimum grade C-.
Offered: Every other year, Spring
CSC 345. Computer Graphics.3 Credits.
This course is an introduction to theory and programming in computer graphics. Topics include graphic systems, fundamental techniques in graphics, basic rendering, basic geometric modeling, visualization, virtual reality, computer animation, advanced rendering and advanced geometric modeling.
Prerequisites: Take CSC 215 CSC 225; Minimum grade C-.
Offered: As needed
CSC 350. Artificial Intelligence.3 Credits.
This course is an exploration of applied and theoretical topics in artificial intelligence (AI). Topics include search and optimization methods, adversarial game playing, natural language processing, and machine learning techniques, such as neural networks, supervised learning, and reinforcement learning. Additional topics may include large language models, clustering, constraint satisfaction, computer vision, robotics, knowledge-based systems, and planning.
Prerequisites: Take CSC 215. Minimum grade C-
Offered: As needed
CSC 375. Advanced Topics in Computer Science (SER 300).3 Credits.
This course explores advanced computer science topics not available in other courses, as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary.
Prerequisites: Take CSC 215, CSC 225; Minimum grade C-.
Offered: Every year, Spring
CSC 399. Independent Study.1-6 Credits.
Prerequisites: None
CSC 490. Computer Science Internship.1-6 Credits.
Prerequisites: None
Offered: As needed
CSC 491. Senior Project I.3 Credits.
Senior Project I is the first part of a two-semester, capstone experience for computer science students. Students analyze and develop a solution to a major project that requires integration and application of knowledge and skills acquired in earlier coursework. Students develop professional experience by working on a team and communicating progress and results to a variety of audiences. Students explore the ethical and legal responsibilities of a computing professional.
Prerequisites: Take CSC 215, CSC 225; Minimum grade C-.
Offered: Every year, Fall
CSC 492. Senior Project II.3 Credits.
Senior Project II is the second part of a two-semester, capstone experience for computer science students. Students implement and evaluate a solution to a major project that requires integration and application of knowledge and skills acquired in earlier coursework. Students continue to develop professional skills in teamwork and communications, and knowledge of their responsibilities as computing professionals.
Prerequisites: Take CSC 491; Minimum grade C-.
Offered: Every year, Spring
CSC 493. Senior Thesis I.1 Credit.
This course is the first part of a two-semester series in which students work independently under the guidance of a faculty member on the development of a senior thesis. The CSC 493/CSC 494 course sequence provides students with an opportunity to synthesize their knowledge of computer science. Students explore the profession of computing by engaging in the professional literature and exploration of professional ethics. Students meet regularly to present and discuss progress. During the first course in the sequence, students develop a proposal for their thesis, including a literature review, and submit to their adviser for approval.
Prerequisites: Senior status in the major.
Offered: Every year, Fall
CSC 494. Senior Thesis II.3 Credits.
This course is the second part of a two-semester series in which students work independently under the guidance of a faculty member on a significant thesis culminating in the development of a senior thesis. The CSC 493/CSC 494 course sequence provides students with an opportunity to synthesize their knowledge of computer science. Students explore the profession of computing by engaging in the professional literature and exploration of professional ethics. Students meet regularly to present and discuss progress. During the second part in the sequence, students complete the thesis proposed in CSC 493.
Prerequisites: Take CSC 493; Minimum grade C-.
Offered: Every year, Spring
Cybersecurity (CYB)
CYB 505. Introduction to Cybersecurity.3 Credits.
This course will introduce students to basic cybersecurity concepts, including risk management, threats, vulnerabilities, and defense techniques.
Prerequisites: None
Offered: Every year
CYB 506. Introduction to Programming for Security Professionals.1 Credit.
This course introduces students to basic scripting and programming concepts needed for security defense. Course topics include writing scripts for Windows and Linux; understanding basic programming security concepts; basic programming constructs, such as variables, types, loops, functions and data structures.
Prerequisites: None
Offered: Every year, Summer
CYB 509. Operating Systems Security.1 Credit.
This course introduces students to operating systems and the software to support these systems. Topics include operating system security configuration, control objectives, control maintenance and forensics. The course includes hands-on implementation of security controls, including access management, file and process security configuration, and security monitoring.
Prerequisites: None
Offered: Every year, Spring
CYB 510. Introduction to Security Technology.3 Credits.
This course will introduce students to concepts and practices around securing networks, securing operating systems, and securing data with cryptography.
Prerequisites: None
Offered: Every year, Fall and Spring
CYB 517. Introduction to Cryptography.1 Credit.
This course introduces students to cryptography algorithms, protocols and applications. Topics include history; applications, such as SSL and SSH; and protocols, such as hash functions, symmetric and asymmetric cryptography, and attack-vectors for systems.
Prerequisites: None
Offered: Every year, Spring
CYB 520. Concepts and Practices for Securing Data.3 Credits.
This course will introduce students to concepts and practices needed to secure data, in relational, non-relational and IoT platforms.
Prerequisites: None
Offered: Every year, Spring
CYB 524. Relational Database Security.1 Credit.
This course introduces students to different relational database management systems (DMS) and DMS security concerns and methods. Topics covered include hashing and encryption, database access controls, unauthorized access, data corruption and injection.
Prerequisites: None
Offered: Every year, Spring
CYB 526. Non-Relational Database Security.1 Credit.
This course introduces students to the theory, application and security of nonrelational database systems. It focuses on data management, query and security aspects of nonrelational databases. Topics include a comparison between relational and nonrelational database models, NoSQL storage types for different databases such as MongoDB, Hadoop, Amazon DynamoDB, document-based databases and graph databases.
Corequisites: Take CYB 524;
Offered: Every year, Spring
CYB 530. Programming for Security Professionals.3 Credits.
This course will introduce students to programming concepts and practices needed for security defense, including scripting, machine data analytics and security automation.
Prerequisites: None
Offered: Every year, Spring and Summer
CYB 540. Introduction to Secure Networking.1 Credit.
This course introduces students to the theoretical and practical aspects of designing, developing and defending computer networks. Topics include network models, media, architectures, devices, protocols, services, applications and use of network security tools.
Prerequisites: None
Offered: Every year, Spring
CYB 550. Cyber Policy.3 Credits.
There are three parts to this course. The first part covers the applicable federal and state laws and policies related to cyber defense, pertaining to the storage and transmission of data. In the second part, students analyze and develop enterprise security policies. Finally, students learn how to implement machine security policies.
Prerequisites: None
Offered: Every year, Fall and Summer
CYB 613. Practical, Hands-On Healthcare Cyber Risk Management.3 Credits.
This course will introduce students to concepts and practices needed to manage HIPAA compliance and security risks, and how to organize and facilitate these practices within an enterprise health organization.
Prerequisites: None
Offered: Every year, Fall
CYB 615. Introduction to Ethical Hacking Operational Reconnaissance, and Penetration Testing..3 Credits.
Students will learn the basics of conducting a penetration test, including understanding the legal requirements, how to conduct reconnaissance operations, operating common penetration testing tools and how to document the results of a penetration test.
Prerequisites: None
Offered: Every year, Summer
CYB 617. Introduction to Cybersecurity Risk in Fin Tech.3 Credits.
This course will equip students to manage cybersecurity risks in the changing landscape of financial technology and applications. Curriculum will include overview of newer technologies such as AI, 5G wireless, cloud and blockchain.
Prerequisites: None
Offered: Every year, Fall and Spring
CYB 660. Programming for Security Analytics.1 Credit.
This course introduces students to basic command-line methods used in machine data analytics. Student learn how to collect machine logs, search log data, and identify anomalies in logs.
Corequisites: Take CYB 506.
Offered: Every year, Summer
CYB 661. Programming for Security Automation.1 Credit.
This course focuses on programming methods that are applicable to security automation. Students gain experience in automation using Python and Cloud native CLI to facilitate such tasks as automated code scanning; automated application scanning in testing and staging; automated network, server, container configuration checks; and continuous monitoring of development pipeline components and job scheduling.
Corequisites: Take CYB 660.
Offered: Every year, Summer
CYB 665. Workforce Access Security.1 Credit.
This course focuses on authentication and user access technologies and practices within the enterprise. Topics include Active Directory services and architecture, and enterprise network access protocols.
Prerequisites: None
Offered: Every year, Fall
CYB 667. B2C Access Security.1 Credit.
This course focuses on authentication and user access technologies and practices within B2C access. Topics include standards-based B2C authentication and access management protocols.
Corequisites: Take CYB 665.
Offered: Every year, Fall
CYB 669. B2B Access Security.1 Credit.
This course covers access concepts based on B2B communication APIs, such as standard-based protocols and B2B on-boarding, for mobile, social and loT applications.
Corequisites: Take CYB 667.
Offered: Every year, Fall
CYB 670. IoT Security.1 Credit.
This course covers security as it pertains to embedded devices, embodied by the growth of the Internet of Things (IoT). Students learn about the specific security issues related to embedded devices, including Linux malware, DDoS attacks, botnets, cryptography and personal privacy.
Corequisites: Take CYB 526.
Offered: Every year, Spring
CYB 675. Ethical Hacking and Penetration Testing.2 Credits.
This course will introduce students to concepts and practices of ethical hacking and penetration testing. Students will learn how to plan, organize, and perform penetration testing on a simple network.
Prerequisites: None
Offered: Spring
CYB 680. Introduction to Cloud Security.1 Credit.
In this course, students learn fundamentals of Cloud computing and Cloud security. This course covers topics such as shared responsibility models for laaS, PaaS, SaaS and FaaS, and Cloud Security Alliance CCM. Students get hands-on experience creating secure systems within a commercial Cloud vendor environment.
Prerequisites: None
Offered: Every year, Fall
CYB 681. Securing Workloads in AWS.1 Credit.
This course covers concepts and practices for securing AWS workloads. Students are introduced to security controls, such as access controls using IAM, logging and auditing, and other AWS security services.
Corequisites: Take CYB 680.
Offered: Every year, Fall
CYB 682. Securing Workloads in Azure.1 Credit.
This course covers concepts and practices for securing Azure workloads. Students are introduced to security controls, such as access controls using IAM, logging and auditing, and other AWS security services.
Corequisites: Take CYB 680.
Offered: Every year, Fall
CYB 683. Resilient System Design and Development.1 Credit.
This course introduces students to the concepts of secure system design and cyber resilience. The content of this course includes best security processes recommended in NIST 800-160 and techniques and technologies needed for secure system design and development.
Prerequisites: Take CYB 680.
Offered: Every year, Spring
CYB 684. Resilient System Testing.1 Credit.
This course introduces students to state-of-the-art concepts and methods to evaluate cyber resiliency. Topics include breach and attack simulation, configuration assessment and compliance. Hands-on experience with systems testing tools is part of this course.
Corequisites: Take CYB 683.
Offered: Every year, Spring
CYB 685. Operating Resilient Systems.3 Credits.
This course includes hands-on experience with tools for security activities such as intrusion detection and cloud security monitoring. Other topics this course covers include Site Reliability Engineering (SRE), maintaining situational awareness and dynamic threat.
Corequisites: Take CYB 684.
Offered: Every year, Spring
CYB 690. Introduction to Secure Authentication And Access.3 Credits.
Students will be introduced to concepts and practices for secure workplace access, secure B2C access and secure B2B access.
Prerequisites: None
Offered: Every year, Fall
CYB 691. MS Cybersecurity Capstone.3 Credits.
This capstone course is designed to enable students to directly utilize what has been learned in the tools and applications courses in order to analyze and offer solutions for a major cybersecurity challenge. A definition of the problem, analysis of options and a comprehensive presentation of findings and solutions are required components of the course.
Prerequisites: Permission of the Program Director.
Offered: Every year, Spring and Summer
CYB 693. Cybersecurity Professional Experience.3 Credits.
Students gain practical experience in applying theory obtained in previous courses, by employing cybersecurity skills in a professional setting under the guidance of faculty and mentors. Students must obtain departmental approval and register prior to starting the experience.
Prerequisites: None
Offered: As needed
CYB 695. Cloud Security.3 Credits.
This course will introduce students to concepts in cloud security as well as practices in AWS and Azure clouds.
Prerequisites: None
Offered: Every year, Fall
CYB 696. Introduction to Designing, Testing, and Operating Resilient Systems.3 Credits.
Students will be introduced to basic concepts of designing, testing and operating resilient systems, including hands-on defense of simulated cyber attack.
Prerequisites: None
Offered: Every year, Fall and Spring
Software Engineering (SER)
SER 120. Object-Oriented Design and Programming.3 Credits.
This course serves as an introduction to the principles of design and development using object-oriented techniques such as inheritance, polymorphism and encapsulation. Students apply OO techniques to develop event-driven programs. Code craftsmanship is emphasized. Students also learn to apply and recognize design patterns for OO software and to use standard application development frameworks.
Prerequisites: Take CSC 110 and CSC 110L; or CSC 107 with Program Director approval; Minimum grade C-.
Corequisites: Take SER 120L.
Offered: Every year, Fall and Spring
SER 120L. Object-Oriented Design and Programming Lab.1 Credit.
Students gain experience in object-oriented programming and design by completing a series of activities, covering a range of topics from the Object-Oriented Design and Programming course (SER 120). This course is taken in conjunction with SER 120.
Prerequisites: Take CSC 110 and CSC 110L; or CSC 107 with Program Director approval; Minimum grade C-.
Corequisites: Take SER 120.
Offered: Every year, Fall and Spring
SER 175. Introductory Tpoics in Software Engineering.1-3 Credits.
This course explores introductory software engineering topics not available in other courses as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary. This course does not count as an elective in the major.
Prerequisites: Take CSC 110 CSC 106 or GDD 140; Minimum grade C-;
Offered: As needed
SER 210. Software Engineering Design and Development.3 Credits.
This course serves as an introduction to software engineering using object-oriented analysis and design. The course emphasizes the development of robust and high-quality software systems based on object-oriented principles. Implementations are performed using state-of-the-art programming languages and application development frameworks.
Prerequisites: Take SER 120, SER 120L CSC 111 and CSC 111L; Minimum grade C-.
Offered: Every year, Spring
SER 225. Introduction to Software Development.3 Credits.
This course presents introductory software development concepts including group development, large-scale project work and theoretical aspects of object-oriented programming. The course expands on material from previous courses. Professional behavior and ethics represent an important component of this course.
Prerequisites: Take CSC 111, CSC 111L; Minimum grade C-.
Offered: Every year, Fall
SER 275. Topics in Software Engineering.1-3 Credits.
This course explores general software engineering topics not available in other courses, as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary.
Prerequisites: Take SER 120; Minimum grade C-;
Offered: As needed
SER 300. Advanced Topics in Computer Science (CSC 375).3 Credits.
This course explores advanced computer science topics not available in other courses, as well as new topics as they emerge in this rapidly evolving discipline. Topics may be interdisciplinary.
Prerequisites: Take CSC 215, CSC 225; Minimum grade C-.
Offered: Every year, Spring
SER 305. Advanced Computational Problem Solving.3 Credits.
This course presents computational problem solving and advanced algorithmic thinking techniques. It expands on material from previous courses. Students also learn about advanced APIs and software development frameworks, including APIs for advanced collections and concurrent programming, and gain additional experience with frameworks for testing and building software systems.
Prerequisites: Take CSC 215, SER 120, SER 120L; Minimum grade C-.
Offered: Every year, Fall
SER 310. Human-Computer Interaction.3 Credits.
This course addresses concepts in human-computer interaction (HCI). Students learn about interaction design, information visualization, and usability. The course covers cognitive aspects of HCI and methods for evaluating user interfaces.
Prerequisites: Take CSC 215, CSC 225; Minimum grade C-.
Offered: As needed
SER 320. Software Design and Architecture.3 Credits.
Students explore software design methodologies, architectural styles, design principles and design techniques. The course examines the principles and methods of architectural design and detailed design of complex, large-scale software systems and covers a number of architectural styles including classical and emerging styles.
Prerequisites: Take SER 340; Minimum grade C-.
Offered: Every year, Spring
SER 325. Databases (CSC 325).3 Credits.
Students are introduced to the theory and application of database systems. Topics include data modeling and the relational model, query languages, relational database design, transaction processing, databases and physical database design.
Prerequisites: Take CSC 215 and CSC 225 or SER 225 Minimum grade C-.
Offered: Every other year, Spring
SER 330. Software Quality Assurance.3 Credits.
This course acquaints students with various aspects of software quality assurance. Students learn about dynamic analysis approaches, such as testing and runtime assertions, static analysis approaches, such as reviews and finite-state verification, and processes for promoting software quality. Emphasis is placed on testing, including testing processes, such as unit, integration, system, acceptance and regression testing, and test case selection techniques, such as black-box and white-box testing. The relationship between ethics and software quality assurance is explored.
Prerequisites: Take SER 210; Minimum grade C-.
Offered: Every year, Spring
SER 340. Full-Stack Development 1:Software Requirements Analysis.3 Credits.
This course covers basic concepts and principles of software requirements engineering including techniques, processes and tools for specifying software requirements. Students learn software prototyping and front-end web development using the latest technologies. Topics include: Layout and responsive design, interactive web development, and functional web programming.
Prerequisites: Take SER 210; Minimum grade C-.
Offered: Every year, Fall
SER 341. Full-Stack Development 2: Software Design.3 Credits.
This course covers software design methodologies, architectural styles, design principles and design techniques. Students learn back-end web development including building a web service, non-relational databases, routing, aunthentication and state-of-the-art front-end frameworks.
Prerequisites: Take SER 340 Minimum grade of C-
Offered: Every year, Spring
SER 350. Software Project Management.3 Credits.
This course acquaints students with various aspects of software project management. Students learn about project initiation and scope definition; project planning, enactment and closure; measuring and controlling software artifacts and processes; risk management; and human aspects of software project management. Students use various tools for software project management and obtain hands-on experience by acting as managers of an ongoing software project.
Prerequisites: Take SER 225; Minimum grade C-.
Offered: Every year, Fall
SER 360. Software Engineering in Health Care.3 Credits.
Biomedical informatics is one of the fastest growing economic sectors in the world. Software, and thus software engineering, has an important role in biomedical informatics. Students in this course explore the applicability of software engineering techniques to health care. Topics include electronic health records; modeling and analysis of medical processes with the goal of improving safety and efficiency; software solutions for providing clinical decision support; and bioinformatics.
Prerequisites: Take CSC 215, CSC 225; Minimum grade C-.
Offered: Every other year, Fall
SER 375. Advanced Topics in Software Engineering.1-3 Credits.
Software engineering is a rapidly evolving discipline. This course explores advanced software engineering topics that are not covered in any current software engineering course, or expands on topics currently offered in the catalog. A specific course's focus may be interdisciplinary.
Prerequisites: Take SER 225; Minimum grade C-.
Offered: As needed
SER 399. Independent Study.1-3 Credits.
Independent study courses are individual examinations of topics within the discipline not covered by conventional courses. Students who wish to engage in independent study must work with a departmental faculty. Students and faculty must agree on a topic, structure and meeting schedule.
Prerequisites: None
Offered: As needed
SER 490. Engineering Professional Experience.0-1 Credits.
Students gain practical experience in applying theory obtained in previous course experiences by employing engineering skills in a professional setting under the guidance of faculty and mentors. Students must obtain departmental approval and register prior to starting the experience. If approved, an internship could satisfy this requirement. Prerequisite may be waived with permission of adviser.
Prerequisites: Take ENR 395; Minimum grade C-.
Offered: Every year, All
SER 491. Senior Capstone I.3 Credits.
This is the first part of a two-semester, capstone design experience for software engineering students. It involves analysis and synthesis of unstructured problems in practical settings. Students work in teams to formulate issues, propose solutions and communicate results in formal written and oral presentations
Corequisites: Take SER 340.
Offered: Every year, Fall
SER 492. Senior Capstone II.3 Credits.
This is the second part of a two-semester, capstone design experience for software engineering students. Students work in teams to refine software artifacts developed in SER 491 and produce a prototype of a software system. Results are communicated in formal written and oral presentations.
Prerequisites: Take SER 491; Minimum grade C-.
Offered: Every year, Spring