300
Continue to build a computer science foundation. Study of intermediate programming language constructs: event handling, graphical user interfaces, threads, and networking. Introduction to the software engineering process and programming-in-the-large.
3
Prerequisites
CS 203 with a grade of C- or better.
Corequisites
CS 371
Continues the study of computer science and software engineering methodologies with the C programming language. Analysis of common data structures, time and space efficiency, stacks, queues, linked lists, trees, graphs, hash tables, recursion, searching, and sorting algorithms.
3
Prerequisites
CS 203 with a grade of C- or better.
Design, analysis and correctness proofs of important algorithms from areas such as combinatorics, seminumerical algorithms, data storage and retrieval, systems programming, and artificial intelligence. Includes a study of complexity theory.
3
Prerequisites
CS 305 with a grade of C- or better,
MTH 311,
EGR 361 or
MTH 461
Introduction to boolean and sequential logic. Introduction to computer system hardware including Arithmetic Logic Unit (ALU), main memory, cache memory, I/O devices, busses and interfaces, control unit, addressing techniques, and the MIPS assembly language.
3
Prerequisites
CS 305 with a grade of C- or better
Functions, structure, design, and problems of operating systems. Concepts and principles of operating system design and implementation including file system, CPU scheduling, memory management (including virtual memory), deadlocks in computer systems, concurrent processes and programming, threads, and protection.
3
Prerequisites
CS 305 with a grade of C- or better,
CS 333 or
EE 333
Software lifecycle models. Requirements engineering. Planning and managing software projects. Software design methods. System integration, software quality assurance, testing, and validation. Software maintenance.
3
Prerequisites
CS 301,
CS 305 with a grade of C- or better.
Comparative analysis of several modern high level languages in terms of data types and control structures, with emphasis on run-time behavior of programs.
3
Prerequisites
CS 305 with a grade of C- or better.
Introduction to finite automata, Turing machines, formal languages, and computability.
3
Prerequisites
CS 203 with a grade of C- or better,
MTH 311
Lexical analysis, syntactic analysis, type checking, and code generation. Introduction to optimization.
3
Prerequisites
CS 305 with a grade of C- or better,
CS 357,
CS 333 or
EE 333.
In-depth study of professional responsibility in the field of computer science. Students are expected to read journal papers, articles, and books, participate in class discussions, and give presentations.
2
Prerequisites
Upper division standing.
Weekly three-hour laboratory to support CS 301.
1
Corequisites
CS 301
Weekly 3-hour laboratory. Introduces UNIX commands and tools for software development and testing. Includes scripting languages. Replaces CS 373.
1
Prerequisites
CS 203 with a grade of C- or better.
The course focuses on developing and practicing techniques for rapid programming in a small team environment: approaches to problem assessment, selection of data structures and algorithms, implementation, and testing. Students will hone their skills by working in small teams to produce correct solutions to a wide variety of computing problems under time constraints.
1
Prerequisites
CS 305 with a grade of C- or better