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.)
|