Computer Science Fundamentals (3) (F) This course provides an introduction to computer science and programming fundamentals for students who have had no previous programming experience. Topics include hardware, networks, databases, artificial intelligence, operating systems, and the Internet. The students will use a high-level programming language to learn about variables, conditional execution, user interaction, looping, and functions. There is an integral laboratory component.
Introduction to Computer Science I (4) (B) This course introduces the fundamental concepts of computer programming from an object-oriented perspective. Topics covered include simple data types and some simple data structures, message passing, subclasses, inheritance, polymorphism, and conditional and iterative control structures. Through study of object design, this course also introduces the basics of software engineering. A closed lab is an integral part of this course.
Programming Short Course (2) (D) This course is designed to provide the student with a working knowledge of a particular programming language. Students write programs of moderate complexity in the given language. May be taken more than once if the programming language is different.
Introduction to Computer Science II (4) (S) This course continues the introduction of object-oriented programming begun in CSCI-1140, with an emphasis on algorithms, data structures, software engineering, and the social context of computing. A closed lab is an integral part of the course.
Programming for Scientists and Engineers (3) (S) This course introduces the fundamentals of computer programming using C++. The focus of the course is programming for scientific and engineering needs. Topics include basic data types and data structures, pointers, expressions, iterative and conditional control structures, visualization, and object-oriented programming. Students who have received credit for CSCI-2150 may not take this course without permission of instructor.
Discrete Mathematical Structures II (3) (S) This course continues the discussion of discrete mathematical structures introduced in MATH-2550, focusing particularly on topics that contribute to further study of computer science as a discipline. Topics include relations, matrices, computational complexity, elementary computability, discrete probability, recurrence relations, and a continuation of the study of graph theory begun in the previous course.
Database Systems (4) (F) This course uses the idea of information as a unifying theme to investigate a range of issues focusing on database systems design and management. Topics include ER modeling, relational algebra and calculus, SQL, functional dependency theory, normalization techniques, query processing and optimization, and other issues such as concurrency and security. A closed lab is an integral part of the course.
Algorithm Design and Analysis (4) (S) This course introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematics theory and practical considerations of efficiency. Topics include asymptotic complexity bounds, techniques of analysis, and algorithmic strategies. A closed lab is an integral part of the course.
Theory of Automata (3) (F, Odd years) This course covers computer science theory through the study of formal languages and their corresponding automata, including: regular languages and finite-state automata, context-free languages and pushdown autom- ata, and recursively enumerable languages and Turing Machines. The relationship between these languages/ automata and the classes P, NP, and NP-complete are also studied.
Concepts of Programming Languages (4) (F) Syntax and semantics of programming languages. Grammars, parsing, data types, control flow, parameter passing, run-time storage management, binding times, data abstraction, scripting, concurrency, exception handling, language design and evaluation. Programming paradigms to be studied include object-oriented, imperative (procedural), functional, and logic-based.
Artificial Intelligence (4) (D) This course provides an investigation into how to model and implement intelligent behavior using computers. Topics include search algorithms, reasoning, heuristics, game trees, knowledge representation and machine learning. A closed lab is an integral part of the course.
Directed Software Projects (3) (B) This course provides student experience in the development or maintenance/enhancement of one or more software projects of a size and scope smaller to those encountered in the senior capstone. Pre-req: Permission of Instructor
Computer Architecture (4) (F) This course introduces students to the organization and architecture of computer systems, beginning with the standard von Neumann model and then moving forward to more recent architectural concepts. Topics include digital logic, data representations, as well as multiprocessors and alternate and contemporary architectures. A closed lab is an integral part of the course.
Operating Systems and Networking (4) (S) This course introduces the fundamentals of operating systems together with the basics of networking and communications. The main topics include basic operating systems principles, concurrency, scheduling, memory management, security, and basics of networking and communications including World Wide Web technologies. A closed lab is an integral part of the course.
Internship in Computer Science (B) (3) This program offers the student an opportunity for hands-on experience. It involves practical application of course work on a project in a computer science discipline. This is usually done off campus. The student will have a qualified supervisor at the site of the experience in addition to a faculty advisor.
Software Engineering (3) (F) This course combines a range of topics integral to the design, implementation, and testing of a medium-scale software system with the practical experience of implementing such a project as a member of a programming team. This course also treats material on professionalism and ethical responsibilities in software development and human-computer interaction.
Senior Capstone (2) (S) This course, a continuation of CSCI-4920, provides a structured opportunity for the students to complete the software project they designed and began implementing in CSCI-4920. Formal presentations, both oral and written, of the students' work are integral components. (OC, VC, WC)