CSCI 107 Introduction to Programming for Interactive Web Sites
An exploration of the technologies associated with Web programming. Topics include Internet history and its basic architecture, managing an account on a Web server, HTML markup (text, images, links), design issues (HTML tables vs. HTML Frames), use of style sheets (CSS), introduction to the client-server model, HTML forms, JavaScript control structures, the document object model (DOM), and using JavaScript to manipulate the DOM and process HTML forms. Please note that this is a general audience course intended for those who have limited computer background; this course is not intended for those planning to major or minor in Computer Science (and thus does not fulfill any requirements towards the major or minor.) Prerequisite: general familiarity with computer files and folders, word processing, and surfing the Web with a browser.


CSCI 112 Introduction to Object-Oriented Programming via the Web
Methodology of object-oriented programming via Web-based programming in HTML and JavaScript. Web page construction, statement sequences, subroutines, variables, type, arrays, and objects applied to the development of client-side Web applications. Emphasis on the Web, logical thinking, problem solving, and object-oriented programming. Prerequisite: strong high school mathematics background. 


CSCI 212 Computer Science I
Introduction to Computer Science using Java. Program and object-oriented design, basic data structures and algorithms, debugging and exception handling.  Topics includes dynamic memory allocation, arrays, file I/O, classes, sorting, searching, exceptions, inheritance, and interfaces. Prerequisite: Computer Science 112, or significant programming experience with objects & object-oriented programming.


CSCI 213 Introduction to Computer Architecture
Computer architecture, modern CPU design, memory layout, assembly language programming, addressing techniques, input/output techniques, and interfacing with high-level languages. Prerequisites: Computer Science 112 and 212 (212 may be taken concurrently).


CSCI 214 Principles of Digital Logic
Basic logic, digital electronics, microcomputer architecture, and interfacing, with hands-on laboratory activity. Prerequisite: Computer Science 213.

 

CSCI 217 Computer Science II

Continuation of Computer Science I using Java.  Emphasis on advanced Computer Science concepts, including abstract data structures (lists, stacks, queues, trees and graphs), recursion, polymorphism, interface-based programming, algorithms and algorithm analysis. Prerequisite: Computer Science 212.


CSCI 260 Symbolic Logic
An introduction to propositional and predicate logic. Topics include formal semantics, translation, natural deduction, quantification theory, and completeness. The relevance of logic to computer theory and Artificial Intelligence is stressed. (Cross-listed as Philosophy 265.)


CSCI 312 Client-Server Web Applications
An in-depth study of building Web applications using the client-server model. Topics include an overview of HTML and HTML forms for collecting user data, client-server interaction, CGI programming, storage and manipulation of server data using databases, and returning dynamic content to the client. Preprocessed HTML documents with PHP or Java Server Pages and Web session control with cookies and other useful objects. Additional topics may include the distributed object framework, XML for data extensibility, and an overview of Microsoft's Active Server Pages (ASP) and .NET platform for distributed Web applications. Prerequisite: Computer Science 212.


CSCI 314 Numerical Analysis (Offered Less Frequently)
Linear and polynomial interpolation, finite differences, matrix methods. Solution of equations and systems of equations. Numerical differentiation, integration, and solutions of differential equations. Algorithms and computer applications. Prerequisites: Mathematics 111 and 231, and Computer Science 212 or Computer Science 112 with permission of instructor. (Cross-listed as Mathematics 314.)


CSCI 318 Programming Languages
A study of different programming languages and their paradigms (or styles). Topics include imperative vs. functional vs. event-driven vs. declarative programming, typing, memory organization, scope, and lifetime management. Lab exercises focus on programming in the various paradigms; students can expect to program in languages like ML, Visual Basic, and SQL. Prerequisite: Computer Science 217, or Computer Science 212 with permission of instructor. 


CSCI 336 Operating Systems and Systems Programming
An introduction to modern operating systems and their most important features. Topics include multiprocessing, virtual memory, multithreading, concurrency, I/O, networking, security, and distributed computing. Students construct a major component of an operating system in C or C++.  Prerequisites: Computer Science 213 and 217, or Computer Science 213 and 212 with permission of instructor.


CSCI 360 Mathematical Modeling and Computer Simulation (Offered Less Frequently)
Introduction to the process and techniques of modeling actual situations using mathematical methods and computer simulation. Topics may include optimization, dynamical systems, axiom systems, queuing theory, and introduction of a simulation language. Team projects and reports. Prerequisites: Mathematics 111, Computer Science 212 or Computer Science 112 with permission of instructor, and some additional sophistication in at least one of the following: Mathematics, Computer Science, or applying mathematics in a field of interest. (Cross-listed as Mathematics 360.)


CSCI 365 Algebraic Coding Theory (Offered Less Frequently)
A study of the algebraic structure of codes designed to transmit messages through a noisy channel in an efficient and relatively error-free fashion. Topics include finite-dimensional vector spaces over a finite field and the connection between coding theory and areas such as geometry, combinatorics, and number theory. Prerequisite: Mathematics 231 or permission of instructor. (Cross-listed as Mathematics 365.)


CSCI 375 Combinatorics and Graph Theory
Enumeration techniques with emphasis on permutations and combinations, generating functions, recurrence relations, inclusion and exclusion, and the pigeonhole principle. Graph theory with emphasis on trees, circuits, cut sets, planar graphs, chromatic numbers, and transportation networks. Included will be designs with emphasis on Latin squares, finite projective and affine geometries, block designs, and design of experiments. Prerequisite: Mathematics 230. (Cross-listed as Mathematics 375.)


CSCI 417 Algorithms and Algorithm Analysis
The study of algorithms and their mathematical analysis. Divide-and-conquer, greedy, brute-force, dynamic programming, backtracking, advanced tree and graph algorithms, big-O notation, case and amortized analysis. Prerequisites: Mathematics 230, and Computer Science 217.


CSCI 425 Artificial Intelligence
An introduction to AI via topics including tree and graph searches, min-max methods, alpha-beta pruning, heuristics, backtracking, natural language processing, and computer vision. Prerequisites: Computer Science 217 and 318, or Computer Science 217 with permission of the instructor.


CSCI 427 Introduction to Database Systems
An in-depth study of proper methods of design for database systems, with a heavy emphasis on the relational model. Topics include relational design, query languages, and transactional processing. Lab exercises focus on GUI-driven, SQL-based access as well as modern, multi-tier styles of design. Prerequisites: Computer Science 217 and 318, or Computer Science 217 with permission of the instructor.


CSCI 434 Theory of Computation
Formal grammars, sentence derivation and ambiguity, finite state machines, equivalence and reduction, equivalence of right linear grammars and finite state automata, limitations of finite state automata, Turing machines and effective computability, unsolvable problems and NP-complete problems. Prerequisite: Mathematics 230. (Cross-listed as Mathematics 434.)


CSCI 461 Compiler Design
An introduction to the design and construction of compilers for modern programming languages. Topics include grammars, formal language definition, abstract syntax trees, symbol tables, syntax and semantic checking, code generation, and optimization. Students construct a modern compiler for an object-oriented programming language. Prerequisites: Mathematics 230, and Computer Science 213 and 217. 


CSCI 488 Senior Seminar in Computer Science
A seminar-like discussion of software engineering, object-oriented design, and large-scale software development. Students will practice modern software engineering as well as read and present papers concerning the subject. Prerequisites: Computer Science 217, 318, and permission of instructor. (Meets GEC Senior Studies Requirement.)


CSCI 489 Advanced Topics in Computer Science
Special topics and projects in Computer Science, including but not limited to distributed systems, secure computing, Web development, user-interface design, and software engineering.  Prerequisites: Computer Science 217, 318, and permission of instructor. (Meets GEC Senior Studies Requirement.)