**Computer
Science (CSCI)**

**101
Introduction to Computer Science (3)** A first course in computer science providing a
survey of current topics as well as core programming and related
problem-solving skills. Satisfies the mathematics requirement for General
Education. Students should have an acceptable score on the Mathematics
Placement Test or have completed an appropriate remedial course. Cross-listed
as CSCI/LIBS 101. MATH 095 is recommended. F06, S07, F07, S08

**110
Introduction to Computer Programming I (2)** Self-paced independent study in the
fundamentals of computer programming. Each student may choose from several
languages of current interest that are not offered in other courses. Students
complete several programming exercises and projects. Prerequisite: Independent
study contract. Topics: Beginning Programming with LOGO, Beginning
Programming with JavaScript, Basic Web Page Development, Visual Basic.Net,
Information Security. Instructor consent required. F06, S07, F07, S08

**111
Introduction to Computer Programming II (2)** Self-paced independent study of
intermediate-level computer programming. Each student may choose from several
languages of current interest that are offered in other courses. Students
complete several programming exercises and projects. Prerequisites: Independent
study contract and instructor consent. Topics: Intermediate Programming
with LOGO, Intermediate Programming with JavaScript, Intermediate Programming
with PASCAL, Intermediate Programming with JAVA, Intermediate Programming with
C, Intermediate Programming with C++, Intermediate Web Page Development, Linux
Shell Programming. F06, S07, F07, S08

** **

**170
Programming and Technology for the Teaching of Mathematics (3)** Graphing and analysis
of functions using graphing calculators; structured programming; use of
software packages such as Maple and Geometer's Sketchpad. Prerequisite:
Acceptable score on the Mathematics Placement Test or completion of MATH 115
with a grade of at least C-. Lecture and lab. F06, S08

**201
Introduction to Programming (3)** A first programming course for students with a
serious interest in computing. Topics include: formal languages; data types and
variables; control structures; primitive and reference data types; methods and
modular programming; introduction to abstract data types and classes; simple
algorithms; and programming conventions and style. Satisfies the mathematics
requirement for General Education. Prerequisite: Acceptable score on the
Mathematics Placement Test or completion of an appropriate course. MATH 102
recommended. Lecture and lab. S06, S07, F07, S08

**202
Object-Oriented Programming (3) **Continuation of CSCI 201. Programming course
emphasizing the methodology of programming from an object-oriented perspective
and software engineering principles. Topics include: data structure
fundamentals; abstraction and encapsulation; inheritance; pointer and reference
variables; memory management, operator overloading, recursion; various
important algorithms; and file processing techniques. Prerequisite: CSCI 201
with a grade of C- or better. Lecture and lab. S07, S08

**250
Internet Programming (3)** Internet technologies for the World Wide Web such as XHTML,
DHTML, CSS, CGI, JavaScript, Java, and Serlets. Topics include: converting HTML
into XHTML/XML; page layout control with cascading style sheets, form processing
and validation, working with images and JavaScript-based animation,
fundamentals of CGI programming under UInix/Linux environment, server-side
programming with Perl and/or PHP and server programming; server configuration
issues; working with multimedia objects; Java applets; and database access.
Prerequisite: Acceptable score on the Mathematics Placement Test or
completion of an appropriate course. MATH 102, CSCI 201 recommended. Lecture
and lab. S08

**270
Introduction to Computer and Network Security (3)** Based on the System
Administration and Network Security Institute (SANS) recommendations. Offers
comprehensive coverage of the essentials that were determined by the
collaborative work of security professionals and includes topics ranging from
network security and perimeter defense to encryption and risk management. F07

**280
Introduction to E-commerce (3)** Broad coverage of topics pertaining to the
current electronic commerce environment. While this course discusses the
various business models via which ecommerce is delivered, it is weighted more
heavily on giving more depth to the computer science aspects of ecommerce.

** **

**303/503
Algorithms and Data Structures (4) **Continuation of CSCI 202. Concepts and
techniques for various algorithms and related data structures of particular
interest to computer scientists. Emphasis on proper implementation of abstract
data types and analysis of the complexity of algorithms. Topics include: stacks
and queues; hashing graphs and trees, data compression and encryptions; and
related algorithms. Prerequisite: CSCI 202 with grade of C- or better. Lecture.
F06, F07

**320/520
Discrete Structures (4) **Continuation of MATH 310. Investigation of concepts of
noncalculus mathematics used in computer science, operations research and other
areas of applied mathematics. Topics include: relations and functions;
recurrence relations; combinatorics; graph theory; and related algorithms.
Cross-listed with CSCI 320/520. Prerequisite: MATH 310. F06, F07

**324/524
Assembly Language Programming (4)** Fundamentals of Assembly language programming
under DOS, Windows, and Linux operating systems. Topics include: data
representation and fundamentals of computer architecture; memory access and
organization; arithmetic and logical operations; functions and procedures, bit
and string manipulation; pattern matching, computer graphics, interrupt
handling, floating-point arithmetic and combining assembler with high-level
languages. Prerequisite: acceptable score on the Mathematics Placement Test or
completion of an appropriate course. MATH 102 recommended. Lecture and lab.
S07, S08

** **

**331/531
Computer Graphics and 3-D Modeling (3)** Data structures and algorithms used in computer
graphics emphasizing programming rather than graphics design. Topics include:
graphics algorithms; design and implementation of graphics applications; 2-D
and 3-D modeling; and animation. Mathematical treatment of topics requires an
understanding of fundamental concepts in calculus and matrix algebra.
Prerequisite: CSCI 201. Lecture and lab. Offered on demand.

**340/540
Software Development and Professional Practice (4)** Best practices in the
field of software development. Students complete a medium-scale software
project as members of a development team. Topics include: professional ethics
and responsibilities; multi-tier systems; software life cycle; requirements
analysis; system modeling; implementation and testing; re-engineering and
maintainability, secure coding, system security, and risk management techniques
are integrated into all facets of the development process. Prerequisite CSCI
303. S07, S08

**356/556
Data-centric Computing and Data Security (3)** Discusses the representation,
organization, transformation, and presentation of information, algorithms for
efficient and effective access and updating of stored information, data
modeling and abstraction; information security, privacy, integrity, and
protection in a shared environment. Prerequisite: CSCI 201 recommended. S08

**381
Special Projects (1-4)** Various individual and small-group projects carried out
under the supervision of one or more instructors. Requires weekly progress
reports plus a final report and/or a final exam. May be repeated, but no more
than a total of four credits may be earned from both MATH 381 and CSCI 381.
Evaluation. Pass-Fail only. Instructor consent required. Prerequisites:
Preliminary project plan and an independent study contract. Topics: Independent
Study, Java Certification Part 2, C++, JAVA, On-Line Curriculum Development,
DNA Microarrays. F06, S07, F07, S08

**390
Mathematical Sciences Internship (1-4) **Work in an approved position to gain experience
in solving real problems using computer science, mathematics, and statistics.
Interns may receive salaried appointments with cooperating companies. Credits
do not apply to any major or minor in Mathematics and Computer Science.
Evaluation: Pass-Fail only. Prerequisite: Department approval. Independent
study. F06, S07, F07, S08

**399
Mathematical Sciences Seminar (1) **Students carry out individual investigations in
current literature and present their findings to the entire department. Taken
during senior year. Pass-Fail only. Prerequisite: Independent study contract
and permission of instructor. F06, S07, F07, S08

**401/601
Formal Models for Computer Security (4) **A survey of formal mathematical models for
computer security with in-depth examination of important features and
characteristics. Includes an investigation of mathematical properties of these
models as well as related cryptographic and system implementations. The models
include classical lattice-based models as well as modern policy-based models
such as the Bell-LaPadula model; noninterference models, hybrid models,
integrity models, and miscellaneous formal verification techniques.
Prerequisite: MATH 310, CSCI 270. S08

**410/610
Programming Language Principles (4)** Survey of programming languages of current
interest with in-depth examination of important features and characteristics.
Includes an investigation of fundamental programming language concepts and
design issues related to the procedural, functional, and object-oriented
paradigms. Students conduct programming exercises to discover and experiment
with features of several languages and to implement interpreters and compilers
for simple languages of their own design. Prerequisite: CSCI 303. Offered on
demand.

** **

**421/621
Theory of Computation (4)** Thorough introduction to automata, formal languages and
compatibility. Topics include: models of computation; regular and context-free
languages; finite and pushdown automata; Turing machines; unsolvable decision
problems; and fundamentals of computational complexity. Cross-listed as MATH
421/621. Prerequisites: CSCI 320. F07

**425
Algorithm Design and Analysis (4)** Study of the design and analysis of algorithms
that are based on elementary data structures such as queues, stacks and trees.
Some graph and network algorithms (shortest paths, connectivity, coloring,
flows, matchings), goemetric algorithms (convex hulls, range search, nearest
neighbors), NP-complexity, approximation algorithms (vertex cover, traveling
salesman, scheduling), and introduction to randomized algorithms. Introduction
to algorithm design techniques, including greedy algorithms,
divide-and-conquer, and dynamic programming. Lower and upper bounds of program
complexity are analyzed. Introduction to algorithms used in the area of
information security. Cross-listed as MATH 425/625. Prerequisites: CSCI 320.
CSCI 202 recommended. F06

**437
Cryptography (4)**
Study of the theory of cryptography and its use in computer security. Topics
include: discrete probability spaces, Shannon's theory of information, unicity
distance, perfect secrecy, redundancy of a language, classical cryptosystems,
classical cryptanalysis (frequency analysis, index of coincidence),
authentication and keyexchange, public key cryptosystems, elementary number
theory, primality checking, the RSA cryptosystem. Prerequisite: CSCI 201, MATH
310. Cross-listed as MATH 437. S07

**451/651
Operating Systems and System Security (4) **In-depth study of the concepts, issues,
and algorithms related to the design and implementation of operating systems.
Topics include: process management, process synchronization and interprocess
communication; memory management; virtual memory; interrupt handling; processor
scheduling; device management; I/O; file systems; and introduction to
networking and network security. Students conduct programming projects and case
studies to investigate modern operating systems such as Solaris, Linux, and
Windows. Prerequisite: CSCI 201. F06

**461/661
Computer Architecture and Organization (4) **In-depth study of fundamentals of
computer hardware organization. Topics include: digital logic and circuits;
finite state machines; computer arithmetic, machine instructions and assembly
language; memory management and design; storage system design; I/O modules,
operating system support; structure and function of computer processors, RISC
vs. CISC architecture, microprogrammed control, input/output devices, and
computer security. Prerequisite: CSCI 324. S07

**470
Net-centric Computing and Network Security (4)** Introduces the
structure, implementation, and theoretical and underpinnings of computer networking
and the applications that have been enabled by that technology. Introduction to
network security. Prerequisite: CSCI 201. F07

**475/675
Numerical Analysis (4) **Study of theory and applications of computational techniques
for mathematical solutions emphasizing rapid approximation and error analysis.
Topics include: solution to equations in one variable; polynomial
approximations to functions; error analysis; numerical solutions to ordinary
differential equations; boundary value problems. Prerequisite: MATH 242.
Offered when sufficient demand exists. Cross-listed as MATH 475/675.
Prerequisite: MATH 242.

**481/681
Special Topics (1-4)**
Investigation of one or more topics of current interest not covered in other courses.
Not intended for independent study projects. May be repeated, but no more than
a total of eight credits may be earned from both MATH 481 and CSCI 481.
Prerequisite: Consent of instructor. Offered when sufficient demand exists.

**499
Capstone Project (1-3)** Group projects are carried out by students under
supervision of a faculty member. Prerequisite: CSCI 340 and independent
learning contract. F06, F07