What is computer science, what are its applications in other disciplines, and what is its impact in society? A step-by-step introduction to the art of problem solving using the computer and programming. Provides a broad introduction to computer science and programming through real-life applications. Weekly labs provide experiments with the concepts presented in class. Assumes no prior knowledge of computers or programming. Final examination grade must be C or better to serve as a prerequisite for Computer Science 2010.

CSCI 1101B. Introduction to Computer Science.

What is computer science, what are its applications in other disciplines, and what is its impact in society? A step-by-step introduction to the art of problem solving using the computer and programming. Provides a broad introduction to computer science and programming through real-life applications. Weekly labs provide experiments with the concepts presented in class. Assumes no prior knowledge of computers or programming. Final examination grade must be C or better to serve as a prerequisite for Computer Science 2010.

CSCI 2101. Data Structures.

Solving complex algorithmic problems requires the use of appropriate data structures such as stacks, priority queues, search trees, dictionaries, hash tables, and graphs. It also requires the ability to measure the efficiency of operations such as sorting and searching in order to make effective choices among alternative solutions. Offers a study of data structures, their efficiency, and their use in solving computational problems. Laboratory exercises provide an opportunity to design and implement these structures. Students interested in taking Computer Science 2101 are required to pass the computer science placement examination with a grade of C or better before class starts.

CSCI 2200. Algorithms.

An introductory course on the design and analysis of algorithms. Introduces a number of basic algorithms for a variety of problems such as searching, sorting, selection, and graph problems (e.g., spanning trees and shortest paths). Discusses analysis techniques, such as recurrences and amortization, as well as algorithm design paradigms such as divide-and-conquer, dynamic programming, and greedy algorithms.

CSCI 2350A. Social and Economic Networks.

Examines the social and economic aspects of today's connected world from a multitude of perspectives; namely, network science, sociology, economics, and computer science. The fundamental questions to be addressed are: What is a network? What does a real-world network look like? What are its effects on various social and behavioral phenomena, such as smoking, obesity, or even videos going viral? This course will then study the network structure of the Internet, how companies like Google search it, and how they make money doing so. Further economic implications of networks, including networked economies and markets, will also be addressed. Background required: basic probability theory (e.g., high school level) and basic matrix algebra (e.g, matrix multiplication).

CSCI 2350B. Social and Economic Networks.

Examines the social and economic aspects of today's connected world from a multitude of perspectives; namely, network science, sociology, economics, and computer science. The fundamental questions to be addressed are: What is a network? What does a real-world network look like? What are its effects on various social and behavioral phenomena, such as smoking, obesity, or even videos going viral? This course will then study the network structure of the Internet, how companies like Google search it, and how they make money doing so. Further economic implications of networks, including networked economies and markets, will also be addressed. Background required: basic probability theory (e.g., high school level) and basic matrix algebra (e.g, matrix multiplication).

CSCI 3250. Computational Geometry.

Computational geometry studies algorithms for collections of geometric objects such as points, lines, polygons. For example: given a set of locations, find the closest pair of locations; find a triangulation of a set of surface samples that maximizes the minimum angle of a triangle--this type of meshing is often used in solid modeling, where small angles cause numerical instability; find whether two polygons intersect. Geometric algorithms arise in areas such as computer graphics, robotics, or image processing. The class will cover the basic geometric problems and techniques: polygon triangulations, convex hulls, Delaunay triangulations and Voronoi diagrams, visibility, geometric searching and motion planning. Class work consists of a set of programming assignments in C/C++.

CSCI 3325. Distributed Systems.

Studies the key design principles and implementation challenges of distributed systems, which are collections of independent, networked machines functioning as single systems. ??Topics include networking and communication protocols, naming, synchronization, consistency and replication, fault tolerance, and security. Students will gain exposure to real-world distributed systems through programming-intensive projects as well as critiques of research papers covering a variety of real-world systems, ranging from the Internet to file systems.

CSCI 3445. Nature-Inspired Computation.

The size and complexity of real-world optimization problems can make it difficult to find optimal solutions in an acceptable amount of time. Researchers have turned to nature for inspiration in developing techniques that can find high-quality solutions in a reasonable amount of time; the resulting algorithms have been applied successfully to a wide range of optimization problems. Covers the most widely used algorithms, exploring their natural inspiration, their structure and effectiveness, and applications. Topics will be drawn from: genetic algorithms, particle swarm optimization, ant colony optimization, honeybee algorithms, immune system algorithms, and bacteria optimization algorithms. Requirements include labs, programming assignments, and a larger final project.