Computer Science Courses
This course provides students who are not computer science majors with an introduction to web programming. The course focuses on the design and development of web sites and applications, emphasizing problem solving, design, and deployment in the real world.
We’ll investigate how computer science, biology and math come together in Bioinformatics to impact our lives. We’ll study applications of Bioinformatics, such as CSI and gene therapy, including ethical concerns. We’ll use simple Bioinformatics tools and propose policy. No prerequisites.
An introduction to computer science for non-majors with little prior programming experience. Students develop programs using visual and high-level programming languages to control robots, create animated simulations, and build Internet and general applications. In addition, students are exposed to an overview of computing and its influence on modern society. Offered Fall and Spring.
Use of procedures, parameter passing, block structures, data types, arrays, abstract data structures, conditional control, iterative and recursive processes, and input/output in programming solutions to a variety of problems. Top-down and bottom-up design and functional decomposition to aid in the development of programs. Four hours lecture and two hours lab. Offered Fall and Spring.
Design and development of significantly sized software using top-down design and bottom-up implementation. Dynamically allocated data, object-oriented programming, architecture of memory, basics of language translation, and basics of algorithm analysis. Development of simple graphical user interfaces. Four hours lecture. Offered Fall and Spring. Prerequisite: CS 110 (grade of C or better).
An interesting introduction to a topic in the field of Computer Science.
Advanced programming topics including inheritance and polymorphism, multi-threaded programming, networking, database programming, and web development. Techniques for debugging, refactoring, and reviewing code. Prerequisite: CS 112 (grade of C or better).
Introduction to the C programming language. Overview of parallel architectures. Programming shared and distributed memory parallel computers. Parallel program performance evaluations. Four hours lecture. Offered every Fall. Prerequisites: CS 110 (grade of B or better) and permission of instructor or CS 112 (grade of C or better).
Introduction to the C programming language and UNIX/Linux systems programming. Pointers in C, libraries, devices, processes, threads, system calls, memory management, and interprocess communication with sockets. Prerequisite: CS 110 (grade of C or better).
Algorithm analysis and asymptotic running time calculations. Algorithm design techniques and implementation details. Algorithms for sorting and searching, trees, graphs, and other selected topics. Four hours lecture. Offered every Spring. Prerequisites: CS 112 (grade of C or better) and MATH 201 (grade of C or better).
Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester. Consent of instructor required. Offered intermittently.
Performance analysis techniques, instruction set design, computer arithmetic, digital design, processor implementation, and memory systems. Performance enhancement using pipelining and cache memory. Four hours lecture and two hours lab. Offered every Spring. Prerequisites: CS 220 or CS 221 (grade of C or better) and CS 245 (grade of C or better).
The design and implementation of operating systems. Study of processes, threads, scheduling, synchronization, interprocess communication, device drivers, memory management, and file systems. Four hours lecture and two hour lab. Offered every Fall. Prerequisites: CS 220 or CS 221 (grade of C or better) and CS 245 (grade of C or better).
Data modeling, record storage, and file organization; database theory; relational, hierarchical, and network models; database management systems and query languages, programming language interfaces to databases; web-based client-server development. Four hours lecture. Prerequisites: CS 112 (grade of C or better) and CS 245 (grade of C or better).
Current methods and practices in the use of computer networks to enable communication. Physical and architectural elements, and layered models of networks. Communication protocols and associated algorithms; local and wide area networks; network security. Four hours lecture. Prerequisites: CS 112 (grade of C or better); CS 245 recommended.
Syntax, semantics, concepts, capabilities, and implementation details of several different programming languages, including imperative, functional, object oriented, and logical languages. Comparative advantages and disadvantages of different languages and paradigms. Four hours lecture. Prerequisites: CS 112 (grade of C or better); CS 245 recommended.
Introduces students to the field of data visualization. Covers basic design and evaluation principles, how to acquire, parse, and analyze large datasets, and standard visualization techniques for different types of data. Utilizes the Processing programming language and environment for rapid visualization prototyping. Prerequisite: CS 212 (grade of C or better).
Weekly colloquium and discussion session on current developments in various aspects of computer science. Students may register for this course in more than one semester. Majors must take this course at least twice. One hour lecture. Offered Fall and Spring. Prerequisite: CS 112 with a grade of C or better.
Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester. Consent of instructor required. Offered intermittently.
Written permission of the instructor, chairperson, and dean is required.
Finite state automata with bounded and unbounded memory. Regular languages and expressions. Context-free languages and grammars. Push-down automata and Turing machines. Undecidable languages. P versus NP problems and NP-completeness. Four hours lecture. Offered every Fall. Prerequisites: MATH 201 (grade of C or better) and MATH 202 (grade of C or better).
Lexical analysis, parsing, semantic analysis, and code generation. Optimization techniques. Compiler design tools and compiler compilers. Four hours lecture. Offered every Spring. Prerequisites: CS 245 (grade of C or better); CS 345 recommended and CS 411 recommended.
Theory and production of interactive computer graphics. Topics chosen from graphics programming and algorithms, modeling, rendering, ray-tracing, and animation. Four hours lecture. Prerequisites: CS 112 (grade of C or better) and MATH 202 (grade of C or better), or permission of instructor.
Study of the design and implementation of 3D Computer Games. Topics include 3D Modeling and Texturing, 3D Math (including rotational and translational matricies and quaternions), collision detection, physics engines, and 3D Graphics engines. Prerequisites: CS 245 with a minimum grade of C and CS 212 with a minimum grade of C
Floating point representation of numbers, error analysis, root finding, interpolation, numerical integration and differentiation, numerical solution of linear systems, numerical solution of differential equations. Four hours lecture. Prerequisites: CS 112 (grade of C or better) and MATH 202 (grade of C or better).
Propositional and predicate calculus, syntax and semantics, formal theories, logic programming, lambda calculus. Applications of logic to computer science and mathematics. Four hours lecture. Prerequisite: MATH 201 (grade of C or better), or permission of instructor.
Computer and network security measures; encryption protocols. Ethical theory and applications in computing. Seminar discussion on value systems, social impact, and human factors, and about use and misuse of computers. Four hours lecture. Prerequisite: CS 112 (grade of C or better), or permission of instructor.
Topics not covered by other CS curricular offerings. Students may register for this class in more than one semester. Consent of instructor required. Offered intermittently.
Students working in teams investigate, specify, design, implement, test, document, and present to their classmates a significant software project. Sound software engineering practicies are presented in lectures and used to evaluate each stage of the project. Written and verbal communication is emphasized through frequent documentation submissions, informal group discussions, code walk-throughs, and student presentations. With the instructor's permission, the course may be repeated for credit. Four hours lecture. Offered Fall and Spring. Prerequisite: CS 212 (grade of C or better) and senior standing.
Written permission of the instructor, chairperson, and dean is required.