Computer Science (CSCI)

CSCI 101     Introduction to Computer Science  (4)

An introductory survey of computer science designed for liberal arts students, including such topics as machine architecture, language translation, artificial intelligence, and noncomputability.

CSCI 105     “Garbage In, Garbage Out": Ethical, Legal, and Social Issues in a Computerized World  (4)

An examination of a wide array of social, legal, and ethical issues related to the ubiquity and range of computing and computers. Topics explored include computer activism, computer crime, the fourth amendment and expectation of privacy, intellectual property protection, computer surveillance, identity theft, secure communication, and digital forgery. No computing experience is required. Open only to new first-year students.

CSCI 120     Introduction to Environmental Computing  (4)

The course includes an introduction to common software programs used in geographic information systems (GIS) and provides an overview of GIS-related technologies. It also introduces students to a deeper understanding of the Internet as a computing technology and how it can be used best to share environmentally-oriented research and information with the public. The class covers hypertext markup language, basic design, layout, construction, setup and maintenance of a web site as the support structure for online publication of environmental content. Existing environmental web sites provide valuable case studies for analysis and improvement.

CSCI 157     Introduction to Modeling and Programming  (4)

An introduction to creative modeling of both natural and virtual worlds, in which students gain understanding of human interaction with computing devices as well as the expertise needed for further course work in computer science. Lab experiences using the explicit notation of a programming language reinforce the application of abstractions while affording practice in algorithmic problem solving and relevant theory.

CSCI 180     Business Data Communications and Computer Networks  (4)

This course offers a balanced approach between technical and practical aspects of data communications, providing an exploration of how things work as well as how they can be applied to create business solutions. Data communications and computer networks are essential for the functioning of banking systems, financial markets, trade, and local and global businesses, which must manage those systems, plan for technological growth, and reduce the security vulnerabilities that are introduced by those systems. Topics covered include distributed data processing, Internet architecture and protocols, client-server computing, local and wide area networks, wireless communications, and network security.

CSCI 257     Data Structures  (4)

Focuses on data abstraction, algorithm design and analysis, recursion, and the implementation of larger programs. Prerequisite: CSCI 157.

CSCI 276     Multimedia Programming and Design  (4)

An introduction to object-oriented programming techniques that underlie the creation, manipulation, and transmission of digital media, including digital photography, audio, and video. Topics include scaling and transforming pictures, sound waveform visualization and manipulation, MIDI, chromakey, frame-based animation, and compression, encoding, and transmission of digital media over the Internet. Prerequisite: CSCI 157.

CSCI 284     Database Design with Web Applications  (4)

This course provides students with a working knowledge of the power and potential of modern networked databases as well as of common uses and abuses. Students receive hands-on experience with open source development tools, which are widely used for building and placing databases on the web. Database development is explored, from conceptual elaboration through design and implementation, and interview techniques for effective database design are considered. Programming techniques are introduced for building, maintaining, accessing, interacting, and protecting the information in large data depositories. Discussions include consideration of concerns driving policy decisions for amassing and managing sensitive, and sometimes dangerous, information collections. Prerequisite: CSCI 157.

CSCI 286     Computer Mapping and Geolocation  (4)

An introduction to computer location algorithms and networks with an emphasis on fundamental principles, this course provides basic understanding of location services and underlying technologies, including comparisons of popular mapping and geolocation programming technologies appropriate for web and mobile platforms. Prerequisite: CSCI 257.

CSCI 290     Data Mining  (4)

Data mining is the automated analysis of large quantities of data to extract previously unknown patterns such as clusters, anomalies, relationships, and dependencies. As large columns of data accumulate, techniques are needed to make sense of the stored information and predict future trends. Data mining applications have become important in fields such as finance, healthcare, manufacturing, and marketing. This course introduces students to the principal ideas in statistical learning, including areas such as classification, clustering, and data extraction. Along the way, students develop problem-solving skills and an understanding of programming techniques and data structures. Prerequisite: CSCI 257 or CSCI 284.

CSCI 310     Theory of Computation  (4)

An introduction to the theoretical foundations of computing including abstract models of computing machines, the grammars the machines recognize, and classes of languages. Prerequisite: CSCI 257 and MATH 215.

CSCI 320     Analysis of Algorithms  (4)

Systematic study of algorithms and their complexity, searching and sorting, pattern matching, geometric and graph algorithms, NP-complete and intractable problems. Prerequisite: CSCI 257 and MATH 215.

CSCI 326     Functional Programming  (4)

Data abstraction and data-driven recursion, higher-order functions, and the management of state. An exploration of the functional paradigm in the context of concurrent and distributed computing. Prerequisite: CSCI 257.

CSCI 344     Robotics  (4)

An overview of the field of robotics with special emphasis on motion planning. In addition to basic computer science concepts, introductions to the necessarily related fields of mechanical and electrical engineering will be provided as appropriate. Computer simulations will be used and students will get hands-on experience with real world robotics through assignments using project component kits. Prerequisite: CSCI 257 and MATH 215.

CSCI 348     Databases  (4)

An introduction to the design of databases for the systematic collection, organization, and retrieval of large quantities of related information. The relational data model will be used with a design process that begins with conceptual modeling and ends with the physical data organization. The course includes topics such as normalization, SQL, data quality management, implementation issues, database administration, and data warehousing. Prerequisite: CSCI 257 and MATH 215.

CSCI 356     Artificial Intelligence  (4)

Knowledge representation, expert systems, natural language processing, computer vision, machine learning, game playing, cognition. Prerequisite: CSCI 257 and MATH 215.

CSCI 360     Principles of Interactive Computer Graphics  (4)

Introduction to interactive computer graphics including 2D and 3D viewing, clipping, hidden line/surface removal, shading, interaction handling, geometrical transformations, projections, and hierarchical data structures. Brief introductions to related and dependent fields of physically-based modeling and scientific visualization will be included. Prerequisite: CSCI 257 and MATH 215.

CSCI 370     Computer Organization  (4)

Levels of abstraction in computer organization, processors and related hardware components, instruction sets, program execution, and the memory hierarchy. Prerequisite: CSCI 257.

CSCI 376     Programming Languages  (4)

Imperative, object-oriented, declarative, and functional programming language paradigms. Prerequisite: CSCI 257 and MATH 215.

CSCI 411     Computer Networks and Architecture  (4)

Computer network design and performance, communication protocols, LAN standards, internetworking, congestion control, routing, client/server programming, network security. Prerequisite: CSCI 270 or CSCI 370.

CSCI 415     Special Topics  (2 or 4)

This course explores emerging concepts, methodologies, and applications to other disciplines in the field of computer science. Topics may vary from offering to offering, and the course may be repeated for credit when topics differ. Prerequisite: CSCI 257.

CSCI 428     Operating Systems  (4)

Process management, memory management, processor scheduling, file systems, concurrent programming, distributed processing, security. Prerequisite: (CSCI 270 or CSCI 370) and MATH 215.

CSCI 430     Machine Learning  (4)

Study of intelligent problem-solving, searching algorithms, inference systems, and machine intelligence. Topics covered include Bayesian decision theory and pattern recognition techniques such as neural networks, genetic algorithms, and traditional artificial intelligence methodologies. Prerequisite: CSCI 257 and MATH 210.

CSCI 444     Independent Study  (2 or 4)

An opportunity for advanced students to pursue topics of special interest. Prerequisite: Professor consent and prerequisite override required.