Computer Science Course Flow 2017-2018

Note that only major courses are included below. Students must complete 120 credits of coursework that includes 36 credits that satisfy the General Education Requirements as well as 28 required non-ICS courses.

Click any course for a description.
Course Flow Diagram

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.


CS 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.


CS 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.


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.


CS 2275: Computer Organization and Assembly

Prerequisite or Corequisite: INFO 1150, CS/INFO 1182
Prerequisite: MATH 1143 or MATH 1144 or MATH 1147 or MATH 1170 or equivalent.1

Effect of computer architecture on the performance and correctness of code including data representation, machine language, compilation, code optimization, memory hierarchy, linking, pipelining, virtual memory, I/O and storage, and operating systems. Assembly programming.


CS 3308: Data Structures and Programming

Prerequisite: CS 1182 or INFO 1182, and MATH 1143 or MATH 1144 or MATH 1147 or MATH 1170 or equivalent

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.


CS 3385: Data Structures and Algorithms

Prerequisite: CS 2275, CS 3308, MATH 1175, and MATH 2240
Prerequisite or Corequisite: MATH 1187or MATH 2287

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.


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.


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.


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.


INFO 3307: Systems Analysis and Design

Pre- or Corequisite: INFO/CS 1181 or INFO 3303

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.


INFO 3380: Networking and Virtualization

Prerequisite: INFO 1150 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.


INFO 4407: Database Design & Implementation

Prerequisite: INFO 3307 and either INFO 1182 or CS 1182

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.


INFO 4411: Intermediate Information Assurance

PPrerequisite: 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.


CS 2263 — Advanced Object-Oriented Programming

Prerequisite: CS 1182.

Advanced programming in a modern object-oriented language, different from the one used in CS 1181 and CS 1182; philosophy, application, and examples of object-oriented concepts and techniques; comprehensive survey of software engineering design patterns.

CS 3321 — Software Engineering

Prerequisite: CS 3308.

Techniques and tools for conceiving, designing, testing, deploying, maintaining, and documenting large software systems with particular focus on the Structured analysis and design phases including task analysis, human factors, costs, and project and team management. Cross listed as INFO 3307.

CS 3331 — Web Programming

Prerequisite: CS 3308.

Server- and client-side programming, web-based database programming.

CS 3342 — Computer Graphics

Prerequisite: CS 3308 and MATH 2240.

Covers raster graphics, primitives, scan conversion, geometric transformations, object hierarchies, curves and surfaces, solid modeling, visible surface determination, illumination, shading, manipulation and advanced modeling techniques.

CS 3344 — Artificial Intelligence

Prerequisite: CS 3385.

Fundamental principles and techniques of artificial intelligence systems; search strategies; knowledge acquisition and representation; common sense reasoning; planning; machine learning; expert systems; intelligent agents and multi-agent systems.

CS 3386 — Data Structures and Algorithms II

Prerequisite: CS 3385.

Continuation of CS 3385.

CS 4420 — Computer Security and Cryptography

Prerequisite: CS 3385.

Public key and private key cryptography, key distribution, cryptographic protocols, requisite mathematics and selected topics in the development of security and cryptography.

CS 4442 — GUI Development

Prerequisite: CS 3385

Planning and construction of graphical user interfaces and discussion of essential software engineering concepts.

CS 4444 — Image and Audio Processing

Prerequisite: CS/MATH 1187, MATH 3352, and MATH 3360.

Image/audio acquisition, quantization, spatial and spectral filters, sharpening, smoothing, restoration, compression, segmentation, Fourier and Wavelet transforms.

CS 4445 — Data Compression

Prerequisite: CS 3385.

A survey of modern techniques of data compression, both lossy and loss-less and encryption.

CS 4451 — Database Theory Design Programming

Prerequisite: CS 3385.

Data models, relational algebra and calculus, SQL and stored procedures, database design, ER diagrams, normalization theory, data storage, index structures, performance analysis, concurrency control. Database programming language access. Uses a different programming language.

CS 4460 — Comparative Programming Languages

Prerequisite: CS 3385 and either CS 2275 or CS 4475.

Design of historical and contemporary programming languages, concentration on promoting understanding of structural organization, data structures and typing, name structures, and control structures.

CS 4470 — Parallel Processing

Prerequisite: CS 3385 and either CS 2275 or CS 4475.

Topics in high-performance computing: parallel architectures, SIMD, MIND, SMP, NUMA models, message passing, cache coherency issues, MPI, PVM, parallel programming languages, cluster and grid approaches, applications and experience programming on a cluster.

CS 4475 — Advanced Computer Architecture

Prerequisite: CS 2275 and EE 2274.

Continuation of CS 2275, Computer Organization and Assembly.

CS 4480 — Theory of Computation

Prerequisite: CS 3385, CS/MATH 1187 or MATH 2287, MATH 1175.

Finite representations of languages, deterministic and nondeterministic finite automata, context free languages, regular languages, parsing, Turing Machines, Church’s Thesis, uncomputability, computational complexity classes.

CS 4492 — Special Problems in Computer Science

Prerequisite: Senior or Graduate status in Business, and permission of the Chair

Research and reports on problems or topics in computer science. May be repeated for up to 9 credits with different content.

CS 4499 — Experimental Course

Prerequisite: TBA

This is an experimental course. The course title and number of credits are announced in the class schedule by the scheduling department. Experimental courses may be offered no more than three times with the same title and content

INFO 4430: Web Application Development

Prerequisite: INFO 2220. Pre- or Corequisite: INFO 4407.

Focuses on the development of dynamic, online applications using a programming language like PHP or ASP.Net and a relational database. The course will consider Secure Software Implementation/Coding, which involves secure coding practices, avoiding vulnerabilities, and reviewing code to ensure that there are no errors in the code or security controls. Generally offered Fall only.

INFO 4482: Systems Development & Implementation Methodologies

Prerequisite: INFO 4407. Pre- or Corequisite: INFO 4430.

This course presents the process of software development and the methodologies to lower development costs, increase software reliability, decrease development time and ensure application development success. An overview and comparison of traditional and modern methods of software development are presented. Generally offered Spring only.