Computer Science By Semester 2017

The following table shows a possible course sequence for students attempting to complete the Computer Science degree in five semesters.


Over Five Semesters
Semester #1 Semester #2 Semester #3 Semester #4 Semester #5
INFO 1150 CS/INFO 1182 CS 3308 CS 3385 CS 4481
CS/INFO 1181 CS 1187 INFO 3307 CS 4471 CS 4488
MATH 1147 CS 2275 MATH 2240* INFO 3380 INFO 4411
  MATH 1170   INFO 4407  
  ENGL 1102**      

(Click on most courses to see a course description.)



Notes
* The prerequisites for CS3385 are CS 2275, CS2282, and either Math2240 or CS/Math 1187.
**Engl 1102 and CS 1181 are taken before INFO 3307, which is taken before INFO 4407. INFO 3380, INFO 3307, and INFO 4407 are taken before INFO 4411.

Click here for the 2016 CS-by-semester page.

X

INFO 1150: Software & Systems Architecture

Corequisite: INFO 1181 or CS 1181

Principles and application of computer hardware and systems software in the context of designing business IT infrastructures through combination of theory-based lectures and applied laboratory experiences.

X

CS/INFO 1181: Computer Science and Programming I

Prerequisite: MATH 1143 or MATH 1147 (Coreq okay)

Problem-solving methods and algorithm development with an emphasis on programming style with Java or C#. Includes Secure Software Concepts, such as what constitutes secure software and what design aspects to take into consideration to construct resilient software. Equivalent to INFO 1181. Satisfies Objective 7 of the General Education Requirements.

X

CS/INFO 1182: Computer Science and Programming II

Prerequisite: CS 1181 or INFO 1181

Object-oriented programming in the context of design, using OO principles and UML diagrams. Includes Secure Software Concepts, such as what constitutes secure software and what design aspects to take into consideration to construct resilient software.

X

CS 1187: Applied Discrete Structures

Prerequisite: CS 1181 or INFO 1181

Discrete structures in CS and EE. Boolean algebra and logic; sets, functions, and relations; iteration, recursion, and induction; algorithms; programming in pseudocode; basic counting principles; graphs and trees; and other selected topics from discrete mathematics. Equivalent to MATH 1187.

X

CS 2275: Computer Organization and Assembly

Prerequisite: CS 1181 or INFO 1181

Computer organization from the perspective of instructions, including the central processor, busses, input and output units, and memory units. Instruction sets, loaders and linkers, assembly language, address computation, and other architecture-related functions. Virtual memory. Dynamic and static linking. Uses a different programming language.

X

CS 3308: Data Structures and Programming

Prerequisite: CS 1182 or INFO 1182

Introduction to data structures and their associated algorithms. Abstract data types, linked lists, stacks, queues, trees. Pointers. Sorting and searching. Elementary threading. Extensive programming exercises and projects.

X

CS 3385: Data Structures and Algorithms

Prerequisite: CS 3308, CS 2275 and (CS/MATH 1187 or MATH 2287 or MATH 2240)

The design, construction, and analysis of data structures. Abstract data types, lists, stacks, queues, trees, and graphs. Sorting, searching, hashing, Theory. Includes significant coding projects. Uses Linux.

X

CS 4471: Operating Systems

Prerequisite: CS 2275 and CS 3308

Theory, design, and implementation of software systems to support the management of computing resources. Concurrency, mutual exclusion and synchronization, CPU scheduling. Process, memory, and security. I/O files, and device management. Scripts and shells. Extensive systems programming including implementation of a portion of an operating system.

X

CS 4481: Compilers

Prerequisite: CS 3385

Design and construction of compilers. Theory and pragmatics of lexical, syntactic, and semantic analysis. Interpretation. Code generation for a modern architecture. Run-time environments. Includes a large compiler-implementation project.

X

CS 4488: Advanced Software Engineering and Project

Prerequisite: CS 3385, CS 3321 or INFO 3307, and CS 4451 or INFO 4407

Analysis, specification, design, implementation, and testing of a large software project. Formal approach and tools. Software lifecycle. Human computer interaction. Project and team management. Uses a different programming language.

X

INFO 3307: Systems Analysis and Design

Pre- or Corequisite: INFO 1182 or CS 1182 or INFO 3303 or permission of instructor

Develops systems analysis skills, using proven techniques, prototyping, and structured analysis and design phases of the systems development life cycle. The course emphasizes Secure Software Design, which includes secure design elements, software architecture, secure design review, and threat modeling. Requirements: gathering is emphasized, including secure software requirements gathering to capture all of the security requirements from various stakeholders and understand the sources and processes needed to ensure a more effective design.

X

INFO 3380: Networking and Virtualization

Prerequisite: INFO 1150 (2285) or CS 2275 or INFO 3303

Study of the implementation and development of network information systems. Protocols and techniques will be compared, and virtualization and cloud computing will be emphasized.

X

INFO 4407: Database Design & Implementation

Prerequisite: INFO 3307

Covers multi-user relational database management systems, stored procedures, SQL, transaction processing, etc. The course emphasizes Secure Software Design, which includes secure design elements, software architecture, secure design review, and threat modeling.

X

INFO 4411: Intermediate Information Assurance

Prerequisite: INFO 1150 or CS 2275 or INFO 3310, or permission of instructor

Focuses on homeland security, information assurance, integrity, control, and privacy. Covers CNSS-4011, NIST-800-16 standards, national policy, and international treaties. The course considers Software Deployment, Operations, Maintenance and Disposal, including security issues around steady state operations and management of software, as well as security measures that must be taken when a product reaches its end of life.

top