Courses

Course Code Credits

Healthy Computer Use for Computer Science

Healthy computer use for computer scientists using the Alexander Technique. Survey medical literature related to computer use and musculoskeletal disorders. Pathomechanics of the human-computer interface. Ergonomic conditioning, physical conditioning, mental conditioning and work conditioning. Based on the Alexander Technique: a way of uncovering and correcting mental and physical habits that lead to musculoskeletal injury. Open to Computer Science or Computer Engineering Majors Only. Limited to 10.

CSC090 1

From Gutenberg to Gates

This course explores the history of information technology and its impact on our society. It provides students with the background to understand these changes and the tools they need to manage them, as well as a strong foundation in research, critical thinking, and oral and written communication skills. No prerequisites. Limited to 25.

CSC101 3

Computer Science I

An introduction to programming and problem solving using Java. Topics include: Input and Output; Selection; Repetition; Methods; Recursion; Arrays; Classes and Objects. Limited to 25.

CSC103 4

Computer Science II

Inheritance; Polymorphism; Exceptions; Stream IO; Elementary Data Structures; Graphics; Event Driven Programming. Pre-requisite: CSC 103. Limited to 25.

CSC104 4

How Computers Work

An exploration of how computers work: what goes on inside the computer (hardware), how to program computers (software), the Internet and communication revolution, artificial intelligence, and the limits of computation. Limited to 25.

CSC195 3

Discrete Mathematics for Computer Science I

Discrete mathematical models for applications in computer science. Mathematical induction, graphs, trees, sets, equivalence relations, functions, and partially ordered sets. Asymptotic complexity, Big-O, and Big Omega, recursion and recurrence equations, finite and infinite sums. Predicate logic and first order logic. Basic counting methods, simple combinatorics. Probability and Markov Chains. Linear algebra, applications of linear algebra in computer science. Pre-requisites: MTH 126 and CSC 104. Limited to 25.

CSC201 3

Discrete Mathematics for Computer Science II

Discrete mathematical models for applications in computer science. Mathematical induction, graphs, trees, sets, equivalence relations, functions, and partially ordered sets. Asymptotic complexity, Big-O, and Big Omega, recursion and recurrence equations, finite and infinite sums. Predicate logic and first order logic. Basic counting methods, simple combinatorics. Probability and Markov Chains. Linear algebra, applications of linear algebra in computer science. Pre-requisite: CSC 201. Limited to 25.

CSC202 3

Data Structures

The fundamental methods used to organize data in computer algorithms: stacks, queues, linked lists, trees, graphs, searching, and sorting. Design and analysis of algorithms. Pre-requisite: CSC 104. Limited to 25.

CSC211 3

Computer Logic & Organization

The basics of digital logic design. Binary representation of information, Boolean algebra, truth tables, combinatorial logic, Karnaugh maps, memory elements, flip flops, latches, registers, RAM and variations. ALU's, control logic, and finite state machines. The design of a simple computer. Gates and their implementation with transistors and integrated circuits. Pre-requisite: CSC 103. Limited to 25.

CSC221 3

Advanced Programming

Programming for the world wide web. Extensible Hypertext Markup Language (HTML). Cascading Style Sheets (CSS). Extensible Markup Language (XML). Extensible Stylesheet Transformations (XSLT). Servlets and Servlet Frameworks. Javascript. Document Object Model (DOM). Adobe Flash. Pre-requisite: CSC 211 with a grade of C- or better. Limited to 25.

CSC281 3

Computer Architecture

The basics of computer organization, architecture and assembly language. Instructions sets, address modes, and the run/time stack are explored by programming on a RISC machine. CPU and ALU design, performance analysis, pipelining, cache, and virtual memory are examined. Trade-offs between RISC, CISC and advanced architectures is discussed. Assumes basic knowledge of digital logic. Pre-requisite: CSC 221. Limited to 25.

CSC304 3

Algorithms & Complexity

Basic algorithm techniques: recursion, dynamic programming, greedy method branch and bound. Analysis of algorithms: recurrence equations, NP-completeness, asymptotic complexity. Applications include graph and combinatorial algorithms. Pre-requisites: CSC 201 and CSC 211 with a grade of C- or better. Limited to 25.

CSC311 3

Compiler Design

Finite automata and lexical analysis, context free grammars, top down and bottom up parsing, syntax directed translation, symbol table techniques, runtime storage administration, code generation, optimization. Pre-requisite: CSC 211 with a grade of C- or better. Limited to 25.

CSC312 3

Operating Systems

Process management, concurrency, virtual storage organization, processor management, auxiliary storage management, operating system performance. Pre-requisite: CSC 211 with a grade of C- or better. Limited to 25.

CSC314 3

Programming Languages

Formal language concepts including syntax and basic characteristics of grammars. Control structures, data flow, run-time considerations. Scripting, Functional, and Logic languages. Pre-requisite: CSC 211 with a grade of C- or better. Limited to 25.

CSC323 3

Database Management Systems

Data Modeling using the Entity-Relationship approach. The Relational Model and Relational Algebra. SQL. Functional dependencies and normalization. Database design Process. Record storage and primary file organization. Index structures for files. Concurrency control techniques. Pre-requisite: CSC 211 (with a grade of C- or better). Limited to 25.

CSC325 3

Artificial Intelligence

Introduction to artificial intelligence. Knowledge representation. Natural language processing. Deduction and inference. Expert systems. Computer vision. Robotics. Programming in LISP, PROLOG, or another AI language. Pre-requisite: CSC 211 with a grade of C- or better. Limited to 25.

CSC382 3

Theory of Computation

[Also listed as MTH 384] Introduction to the general theory of computation. Formal grammars: regular, context-free, and context-sensitive languages. Formal automata: finite-state and pushdown models. Decidability. Turing Machines. The Chomsky hierarchy. NP-Completeness and Complexity Theory. Pre-requisite: CSC 201. Cross-listed with the Mathematics Department as MTH 384. Limited to 25.

CSC384 3

Data Networking

Data Networking: Data communication system components, network architecture, layered protocols, traffic analysis, and capacity planning. Pre-requisite: CSC 211 with a grade of C- or better. Limited to 25.

CSC390 3

Numerical Analysis

Both theoretical and practical problems in the computational aspects of mathematics: approximation of functions, numerical differentiation, solutions to algebraic and differential equations; topics in linear algebra. Pre-requisites: MTH 251 and MTH 261. Cross-listed with the Mathematics Department as MTH 393. Limited to 25.

CSC393 3

Topics in Computer Science

An advanced topic in an area of current interest in computer science.

CSC399 3

Computer Science Capstone

Large-scale software project involving teamwork, written reports and oral presentations. Open to senior Computer Science majors and minors. Limited to 25.

CSC400 4

Internship in Computer Science

Opportunity for qualified students to work in the computer industry under professional supervision. Requires approval of the Department Chair. Limited to 25.

CSC475 9

Directed Study

Opportunity for upper level students to do advanced work in a specialized area of computer science. Students must obtain the signatures of the faculty director and the Department Chair. Limited to 25.

CSC490 3