Courses
CSCI-151 Introduction to Programming
An introductory course in computer science for non-majors. The course teaches computer programming with emphasis on logical thinking, problem solving, and algorithmic development. PROCESSING or a similar programming language is used. Topics include variables, arithmetic and logical operators, graphics, user interface, built-in library calls, I/O operations, conditional statements, loops, functions, and classes.
CSCI-181 Principles of Computer Science
An introductory course in computer science for majors. Also open to non-majors. Emphasizes computer problem-solving methods and algorithmic development. Topics include programming in C++ or comparable language, techniques of good programming style, data types, file and screen input and output, control structures, subroutines, recursion, arrays, and pointers.
CSCI-200 Multi-Agent Modeling in the Sciences
This course will explore some of what computer science has to offer to the natural and social sciences. Many phenomena consist of interacting individuals that can be modeled as following a set of behavioral rules. Using a suitable computer language such as NetLogo, Repast, or others, we will learn to model these phenomena. Some programming experience is helpful but not required.
CSCI-281 Data Structures
Second course in computer programming. Stresses the interplay between algorithms, data structures and their implementations. Topics include stacks, queues, linked lists, sorting, searching, binary trees and graphs.
CSCI-282 Computer Organization
Fundamentals of computer organization and machine architecture. Presents an overview of computer system organization and examines in detail the digital logic level, the register level, and the operating system program interface. Uses the assembly language of an available machine for programming assignments.
CSCI-351 Numerical Computing
An introduction to the computational techniques for solving mathematical problems. Topics include roots of non-linear equations, interpolation, numerical differentiation and integration, and numerical solutions of differential equations.
CSCI-352 Numerical Analysis
Theoretical study of the standard numerical techniques for solving mathematical problems. Topics include roots of non-linear equations, polynomial interpolation, solving systems of equations, numerical integration and numerical solutions of differential equations.
CSCI-355 Operations Research
Mathematical models and optimization techniques useful in decision making. Includes linear programming, game theory, integer programming, queuing theory, inventory theory, networks and reliability. Further topics, such as non-linear programming and Markov chains, as time permits.
CSCI-370 Cryptology & Number Theory
Cryptology is the study of hiding the meaning of messages. Cryptology is an interesting venue for the study of its mathematical underpinnings (number theory, matrix algebra, probability and statistics) and as an opportunity to implement techniques by means of computer programs. We will consider monoalphabetic and polyalphabetic encryptions, public key cryptography, security, and anonymity.
CSCI-381 Algorithms
Introduces the design and implementation of algorithms using an object-oriented programming language such as C++ or Java. Covers correctness and efficiency of algorithms for sorting, searching, graph problems and mathematical algorithms.
CSCI-391 Data Communications & Networks I
An overview of data communications and networks, including channel capacity, Ethernet, Internet protocols, DHCP, DNS, TCP, FTP, SMTP, HTTP, web servers, and file sharing.
CSCI-392 Data Communication & Networks II
Further topics in networks, with an emphasis on security. Includes authentication, encryption, verification, certificates, digital signatures, attacks and defenses, privacy, and anonymity. Also covers current developments in networks.
CSCI-434 Artificial Life
Science and mathematics describe natural phenomena so well that lines between real world events and the corresponding theoretical world events have become blurred. Proponents of strong artificial intelligence and artificial life believe that computers will eventually serve not only to model thinking and life processes but will actually think and be alive. These contentions will be compared and contrasted with an emphasis on the current status and future implications of strong artificial life.
CSCI-460 Windows Programming
Programming in an event-driven environment such as the Microsoft Windows operating system. Creation and management of windows, dialog boxes, mouse and keyboard input, message queues, and multithreading.
CSCI-471 Software Engineer: Methodology
The entire software development cycle is explored, from requirements gathering through analysis, design, implementation, testing, and documentation procedures. This course discusses both the theory and the business-world reality of software development, with an emphasis on object-oriented methodologies.
CSCI-472 Software Engineering: Practicum
This course is designed to provide an experience similar to that of working in the software engineering industry. The methodologies discussed in CS:471 Software Engineering: Methodology are put into practice, as students work on project teams throughout one or more software development cycles. Current projects involve designing and developing software to guide a mobile robot.
CSCI-481 Programming Languages
Studies the principles underlying various computer languages. Uses comparisons and evaluations of C, FORTRAN, ALGOL, Pascal, LISP and Prolog to introduce the broad principles of language design and implementation.
CSCI-482 Theory of Computation
An introduction to the classical and contemporary theory of computation. Topics include the theory of automata and formal languages, computability by Turing machines and recursive functions, computational complexity and possibly quantum computers.
CSCI-483 Compiler Theory
Studies the phases of compiler design, such as syntax specification, lexical analysis, parsing, symbol tables, error detection, code optimization and code generation. Term project is to write a complete compiler for a small subset of C.
CSCI-484 Computer Graphics
Basic interactive graphics programming in 2D and 3D using a common graphics library such as OpenGL. Introduces fundamental hardware and software concepts to implement graphics. Covers topics of drawing points, curves, surfaces, lighting, shading, animation, geometrical transformation, representation of 3-D shapes, and removal of hidden edges and surfaces as time permits.
CSCI-485 Artificial Intelligence
A brief summary of the tools, techniques and applications of artificial intelligence. Introduces problem solving and knowledge representation and selects topics from techniques for constructing models, robot design, language processing, computer vision, neural networks and expert systems.
CSCI-486 Introduction to Operating Systems
Introduction to the principles of operating systems through detailed discussion of a popular operating system such as Unix with special attention to the areas of user interface, process management and file systems.
CSCI-487 Operating Systems
A study of general operating systems principles, processes, file systems, memory management, interprocess communication, I/O and concurrent processes. Includes a programming project in which the student writes a part of an operating system.
CSCI-488 Computer Architecture
A study of computer architecture, including logic circuits, CPU design, instruction sets, CISC, RISC, memory architecture, I/O, peripherals, pipelining, superscalar processors, and multiprocessors. Includes hardware and software considerations.
CSCI-500 Senior Colloquium
Experience in individual research and presentation of computer related topics.
CSCI-501 Topics in Computer Science
Subjects vary, depending on instructor and student interest. Example topics include software engineering, cryptography, parallel processing, digital video compression, object-oriented technologies, neural networks, and others as approved.
CSCI-502 Independent Study
Individual work for capable students under the supervision of a faculty member. Prerequisite: Instructor consent and computer science department head approval. Regularly scheduled courses are approved for independent study only under extraordinary circumstances.
CSCI-503 Independent Research
A research project culminating in a substantive paper on a selected topic or field in computer science or information systems by arrangement with an instructor. Open to juniors and seniors with computer science department head permission.
CSCI-599 Internship
Full-time computer science or information systems related employment at an industrial firm or a public service organization. Prerequisite: Senior status, appropriate background courses in computer science and permission of the department internship coordinator. S/U grade.