Skip to main content

Computer Science Courses (CSCI) College of Arts and Sciences


Subject Area Course # Course Title Semester Credit Hours Expand
CSCI 1005 Discussion Group/CSCI1101 Fall 0
Course Description


Instructor(s):

Prerequisites: None

Cross listed with:

Comments:

CSCI 1006 Discussion Group/CSCI1101 Fall 0
Course Description


Instructor(s):

Prerequisites: None

Cross listed with:

Comments:

CSCI 1007 Discussion Group/CSCI1101 Fall 0
Course Description


Instructor(s):

Prerequisites: None

Cross listed with:

Comments:

CSCI 1008 Discussion Group/CSCI1101 Fall 0
Course Description


Instructor(s):

Prerequisites: None

Cross listed with:

Comments:

CSCI 1009 Discussion Group/CSCI1101 Fall 0
Course Description


Instructor(s): Department

Prerequisites: None

Cross listed with:

Comments:

CSCI 1031 Computers in Management: Honors Fall 3
Course Description

Information systems play a vital and varying role in management. In this course we approach the subject in two ways. In one module students learn to use technology as a tool for problem solving by developing increasingly sophisticated models in Excel. The other module provides an introduction to management viewed through the lens of technology. Students examine the role of technology in organizational competitiveness and across a variety of functional areas of the firm (e.g., marketing, finance, operations).


Instructor(s): Prof. James Gips

Prerequisites: None

Cross listed with: ISYS1031

Comments: CSOM Honors Program version of ISYS1021.

CSCI 1101 Computer Science I Spring/Fall 3
Course Description

This course is an introduction to the art and science of computer programming and to some of the fundamental concepts of computer science. Students will write programs in the Python programming language. Good program design methodology will be stressed throughout. There will also be a study of some of the basic notions of computer science, including computer systems organization, files and some algorithms of fundamental importance.


Instructor(s): Department

Prerequisites: No formal prerequisite, but some experience with computers is helpful. The class consist of a lecture and a discussion group. When you registered for the lecture you are required to register for one of the corresponding discussion groups.

Cross listed with:

Comments:

CSCI 1102 Computer Science II Fall/Spring 3
Course Description

In this course the student will write programs that employ more sophisticated and efficient means of representing and manipulating information. Part of the course is devoted to a continued study of programming. The principal emphasis, however, is on the study of the fundamental data structures of computer science (lists, stacks, queues, trees, etc.). Both their abstract properties and their implementations in computer programs and the study of the fundamental algorithms for manipulating these structures. Students will use Java for programming.


Instructor(s): Department and Robert Muller

Prerequisites: CSCI1101

Cross listed with:

Comments:

CSCI 1103 Computer Science I Honors Fall 3
Course Description

This is the honors introductory computer science course. The course is organized around three themes: (1) computation, as a subject of study, (2) coding, as a skill and (3) computer science, as an introduction to the field. The first half of the course explores computation from a simple mathematical perspective. From this point of view, computing can be understood as a natural extension of basic algebra. Midway through, the course turns to a machine-oriented view, considering storage and processor architecture, mutation and mutation-based repetition idioms. The course explores a number of fundamental algorithms with applications in various disciplines. Good program design methodology is stressed throughout. The course is taught using the OCaml programming language. (OCaml is closely related to the F# and Swift programming languages.)


Instructor(s): Robert Muller

Prerequisites: No formal prerequisite, but some experience with computers is helpful. The class consists of a lecture and a discussion group. When you register for the lecture you are required for one of the corresponding discussion groups.

Cross listed with:

Comments: Students will be well prepared for the following-on course CSCI 1102 Computer Science II. Students who are unsure about the fit should consult with Professor Muller.

CSCI 1154 Introduction to Programming and Web Applications Spring 3
Course Description

CSCI1154 is an introduction to programming and web-based applications. Students begin by learning basic web page creation with HTML and server side scripting with PHP. We cover assignments, conditionals, loops and arrays. Next we investigate XML followed by, database design, and database access techniques. Sample projects might include movie rentals, shopping-cart based sales, and student registration systems. The course is currently taught using HTML5, MySQL, and JavaScript, and Wordpress. No prior programming experience is required.


Schedule: Biennially

Instructor(s): Katherine Lowrie

Prerequisites: None

Cross listed with:

Comments:

CSCI 1157 Introduction to Programming in Management Fall/Spring 3
Course Description

An introductory programming course for students interested in (1) learning how to think about problem solving in an orderly, thorough, organized and analytical way, (2) the process of designing software applications, and (3) creating a custom application program. Students who have taken CSCI 1101 (Computer Science I) may not take this course.


Instructor(s): George Wyner and James Gips

Prerequisites: ISYS1021/CSCI1021

Cross listed with: ISYS2157

Comments: This course is required for Information Systems concentrators.

CSCI 2227 Introduction to Scientific Computation Fall 3
Course Description

An introductory course in computer programming for students interested in numerical and scientific computation. Emphasis will be placed on problems drawn from the sciences and will include the implementation of basic numerical algorithms such as solutions of nonlinear equations, numerical integration, solving systems of linear equations, error optimization, and data visualization.


Instructor(s): Sergio Alvarez

Prerequisites: None

Cross listed with:

Comments: This course is required for students minoring in Scientific Computation.

CSCI 2243 Logic and Computation Fall 3
Course Description

A course in the mathematical foundations of Computer Science, illustrated throughout with applications such as sets and functions, propositional and predicate logic, induction and recursion, basic number theory and mathematical models of computation such as formal languages, finite state machines, and Turing machines.


Instructor(s): Howard Straubing

Prerequisites: CSCI1101

Cross listed with:

Comments:

CSCI 2244 Randomness and Computation Spring 3
Course Description

This course presents the mathematical and computational tools needed to solve problems that involve randomness. For example, an understanding of random variables allows us to efficiently generate the enormous prime numbers needed for information security, and to quantify the expected performance of a machine learning algorithm beyond a small data sample. An understanding of covariance allows high quality compression of audio and video. Topics include combinatorics and counting, random experiments and probability, random variables and distributions, computational modeling of randomness, Bayes' rule, laws of large numbers, vectors and matrices, covariance and principal axes, and Markov chains.


Instructor(s): Sergio Alvarez

Prerequisites: CSCI1101 and Calculus

Cross listed with:

Comments:

CSCI 2254 Web Application Development Spring 3
Course Description

In this course students will create interactive web-based applications. We begin by learning basic web page creation and client side scripting. Then emphasis shifts to creating pages that use server-side scripting to provide secure dynamic access to databases over the web. Sample projects might include movie rentals, shopping-cart based sales, student registration systems, etc. The course is currently taught using HTML5, CSS3, PHP, JavaScript, MySQL, and Wordpress. Some prior programming experience required.


Instructor(s): Robert Muller

Prerequisites: None

Cross listed with:

Comments: This course is formerly CSCI1054.

CSCI 2255 Advanced Web Application Development Spring 3
Course Description

This a programming intensive introduction to web application design. We cover both client side and server side scripting currently using HTML5, CSS3, PHP, JavaScript, and MySQL. Students can investigate frameworks and APIs during the project portion of the class. This course assumes prior programming experience. Students without prior programming experience should consider CSCI2254 which is offered in the fall.


Instructor(s): Katherine Lowrie

Prerequisites: CSCI2254 or permission from the instructor.

Cross listed with:

Comments:

CSCI 2257 Database Systems and Applications Fall/Spring 3
Course Description

This course provides in-depth coverage of database systems and their uses. Topics include database architecture, design strategies, SQL queries, security, performance, and using database tools and scripting languages to create sophisticated forms and applications, including web applications. The goal of the course is to give students the knowledge and skills to use databases effectively in any business situation.


Instructor(s): John Spang

Prerequisites: ISYS2157/CSCI1157 or CSCI1101

Cross listed with: ISYS3257

Comments: This course is required for Information Systems concentrators.

CSCI 2267 Technology and Culture Fall/Spring 3
Course Description

This interdisciplinary course will first investigate the social, political, psychological, ethical, and spiritual aspects of the Western cultural development with a special emphasis on scientific and technological metaphors and narratives. We will then focus on the contemporary world, examining the impact of our various technological creations on cultural directions, democratic process, the world of work, quality of life, and especially on the emergent meanings for the terms "citizen" and "ethics" in contemporary society. Students will explore technologies in four broad and interrelated domains: (1) computer, media, communications, and information technologies, (2) biotechnology, (3) globalization, and (4) environmental issues.


Instructor(s): William Griffith

Prerequisites: None

Cross listed with: SOCY6670 PHIL6670 ISYS2267

Comments: Satisfies Computer Science Requirement. Satisfies CSOM Computer Science Concentration Requirement and CSOM Information Systems Concentration Requirement.

CSCI 2271 Computer Systems Spring 3
Course Description

This course is concerned with machine-level program and data representation on modern computer systems and on some of the trade-offs that must be considered when selecting one representation (or programming paradigm) over another. We consider how various representations can affect the efficiency, reliability, and security of computing systems. This is a hands-on course; programming will be completed in the procedural language C with comparisons to object-oriented languages such as Java.


Instructor(s): Edward Sciore

Prerequisites: CSCI1102

Cross listed with:

Comments:

CSCI 2272 Computer Organization and Lab Fall 4
Course Description

This course studies the internal organization of computers and the processing of machine instructions. Topics include computer representation of numbers, combinational circuit design (decoders, multiplexers), sequential circuit design and analysis, memory design (registers and main memory), and simple processors including datapaths, instruction formats, and control units. In the laboratory-based portion of course students design and build digital circuits related to lecture. Exercises include hardware description languages, combinational and sequential circuits, arithmetic and logic units, and simple datapath and control units.


Instructor(s): The Department

Prerequisites: CSCI1101

Cross listed with:

Comments:

CSCI 2274 iPhone Application Development Spring 3
Course Description

This course explores mobile application development using Apple's iPhone platform and the iPhone Software Development Kit. Students will learn how to design, develop and test mobile applications on iPhones, iPod Touches or on workstation-based simulators. Students will become proficient in the object-oriented language Objective-C, the Apple iPhone Framework, and the principles of Cocoa development.


Instructor(s): Robert Muller

Prerequisites: CSCI1102 or permission of the instructor.

Cross listed with:

Comments:

CSCI 3327 Algorithm Analysis and Design for Computational Scientists Spring 3
Course Description

This course provides an introduction to algorithms, focusing on fundamental algorithmic ideas that are useful throughout the computational sciences. Topics include sequences, trees, and graphs; recursion; divide and conquer design; analysis of recurrence relations; asymptotic notation; probabilistic analysis; greedy algorithms; dynamic programming; pattern matching; and matrix computations. Applications to scientific computation will be discussed. An introduction to advanced topics such as parallel algorithms or machine learning may be included if time allows.


Instructor(s): Sergio Alvarez

Prerequisites: CSCI1127 or CSCI1101, one of CSCI2243, MATH2202, MATH2210.

Cross listed with:

Comments: Credit will not be given for both CSCI3327 and CSCI3383.

CSCI 3333 Computer Graphics Spring 3
Course Description

An introduction to the algorithms and techniques involved in representing, animating, and interacting with three-dimensional objects on a computer screen. The course will involve significant programming in Java and OpenGL.


Instructor(s): John Donaldson

Prerequisites: CSCI1102

Cross listed with:

Comments:

CSCI 3335 Principles of Multimedia Systems Fall 3
Course Description

This course is to introduce principles and current technologies of multimedia systems. Topics include multimedia systems design, multimedia hardware and software, issues in effectively representing, processing and transmitting multimedia data including text, graphics, sound and music, image and video. Image, video and audio standards such as JPEG, MPEG, H.26x, Dolby Digital and AAC will be reviewed. Applications such as video conferencing, video streaming, multimedia data indexing and retrieval will also be introduced.


Instructor(s): Hao Jiang

Prerequisites: Some experience in programming. Basic understanding of random process and linear algebra will be helpful but not essential.

Cross listed with:

Comments:

CSCI 3341 Artificial Intelligence Spring/Fall 3
Course Description

This course covers the basic ideas developed in computer science to model an intelligent agent. We will discuss perception and action, knowledge and reasoning, learning and planning. Topics include: adversarial search, computational game theory, logical inference, Bayesian inference, Hidden Markov Models, and various clustering and classification algorithms.


Schedule: Biennially

Instructor(s): Sergio Alvarez

Prerequisites: CSCI1102, CSCI2243, and CSCI2244

Cross listed with:

Comments:

CSCI 3342 Computational Photography Fall 3
Course Description

Computational photography is a new field that leverages the power of digital processing to overcome limitations of traditional photography, and it offers unprecedented opportunities for the enhancement and enrichment of visual media. We will learn how to acquire and process scenes from digitized photographs. Several popular image-based algorithms will be presented, with an emphasis on using these techniques to build practical applications. In the programming assignments, students will have the opportunity to acquire their own images of different scenes and develop the image analysis and synthesis tools needed to process and view the scenes on the computer.


Instructor(s): Hao Jiang

Prerequisites: MATH2202 Multivariable Calculus, MATH2210 Linear Algebra. Basic programming experience such as CSCI1101 or permission of instructor.

Cross listed with:

Comments:

CSCI 3343 Computer Vision Fall 3
Course Description

Computers are gaining abilities to "see" things just like our vision system. Face recognition has been embedded in almost all the digital cameras. Car detection and tracking have been used in self-driving vehicles. Modern search engines are not only able to find similar text patterns but also able to search for similar objects in huge image database. This course is to introduce principles and computational methods of obtaining information from images and videos. Topics include image processing, shape analysis, image matching, segmentation, 3D projective geometry, object tracking, human pose and action, image retrieval, and object recognition.


Instructor(s): Hao Jiang

Prerequisites: CSCI1102 Computer Science II, MATH2202 Multivariable Calculus, MATH2210 Linear Algebra

Cross listed with:

Comments: No image processing and Matlab experiences are required.

CSCI 3344 Mobile Application Development Spring 3
Course Description

This is a project-oriented course focusing on the development of applications for smart phones and tablets. The course is currently taught using Google's Android platform. The course will focus on software and user interface design, emphasizing best practices. The course will examine issues arising from the unique characteristics of mobile input devices including touch and gesture input, access to a microphone, camera, and orientation and location awareness. We will also explore engineering aspects of targeting small memory platforms and small screens. Students will be required to design and develop substantial projects by the end of the course.


Instructor(s): Robert Signorile

Prerequisites: CSCI1102

Cross listed with:

Comments:

CSCI 3345 Machine Learning Spring 3
Course Description

This course provides an introduction to the field of machine learning. Specific learning paradigms to be covered include decision trees, neural networks, genetic algorithms, probabilistic models, and instance-based learning. General concepts include supervised and unsupervised adaptation, inductive bias, generalization, and fundamental tradeoffs. Applications to areas such as human-machine interaction, machine vision, bioinformatics, and computational science will be discussed.


Instructor(s): Sergio Alvarez

Prerequisites: CSCI1101 and either CSCI2245 or MATH2202 or permission of the instructor.

Cross listed with:

Comments:

CSCI 3346 Data Mining Fall/Spring 3
Course Description

This course provides an overview of the field of knowledge discovery and data mining, which deals with the semi-automated analysis of large collections of data that arise in contexts ranging from medical informatics and bioinformatics to e-commerce and security. The goal of data mining is to discover patterns in data that are informative and useful. The course will cover fundamental data mining tasks, relevant concepts and techniques from machine learning and statistics, and data mining applications to real-world domains such as e-mail filtering, gene expression, analysis of biomedical signals, and fraud detection.


Instructor(s): Sergio Alvarez

Prerequisites: CSCI1101 or equivalent is required. CSCI1102 and either CSCI2244 or MATH2245 are recommended.

Cross listed with:

Comments:

CSCI 3347 Robotics Fall 3
Course Description

This course will introduce the basic principles of mobile robotics history, theory, hardware and control. Topics will include robot components, effectors and actuators, locomotion, sensors, feedback control, control architectures, representation, localization and navigation. This is a project-oriented course and the students will have hands-on experience with a real mobile robot. The students will be required to complete several individual programming assignments and a team design project. A separate 0 credit lab course is required (CSCI3348).


Schedule: Biennially

Instructor(s): Robert Signorile

Prerequisites: CSCI1102

Cross listed with:

Comments:

CSCI 3348 Robotics Lab Fall 0 or 0
Course Description


Schedule: Biennially

Instructor(s): Robert Signorile

Prerequisites: None

Cross listed with:

Comments:

CSCI 3353 Object-Oriented Design Fall 3
Course Description

Students will learn the ideas behind object-oriented languages and the corresponding programming techniques. Topics include design patterns, database access through Java, and server-side programming.


Schedule: Biennially

Instructor(s): Department

Prerequisites: CSCI1102

Cross listed with:

Comments:

CSCI 3355 Software Engineering Spring 3
Course Description

This course covers industrial system development using object-oriented techniques. You will learn how to use object-orientation throughout the software life cycle to design, implement, test and evolve Java applications. We will work in teams to develop applications, experiencing the different roles that are required on projects in industry.


Instructor(s): Brian Bernier and Ed Sciore

Prerequisites: CSCI1102

Cross listed with:

Comments:

CSCI 3357 Database Systems Implementation Fall 3
Course Description

An introduction to the internals of client-server database systems. A database system is large and sophisticated. By studying its components, one also learns techniques that apply to numerous other large systems. Topics include JDBC drivers, disk and memory management, transaction processing, and efficient query execution. This course will involve substantial programming in Java.


Instructor(s): Edward Sciore

Prerequisites: CSCI1102

Cross listed with:

Comments: This course will not cover the use of commercial database systems; students interested in that topic should consider taking CSCI2257.

CSCI 3359 Distributed Systems Fall 3
Course Description

Students will learn the major paradigms of distributed computing including client-server and peer-to-peer models. Topics studied in these models include communication, synchronization, performance, fault-tolerance and security. Students will learn how to analyze the correctness of distributed protocols and will be required to build distributed applications.


Instructor(s): Department

Prerequisites: CSCI2271 or permission of instructor

Cross listed with:

Comments:

CSCI 3362 Operating Systems Fall 3
Course Description

This course will provide a broad introduction to software systems with emphasis on operating system design and implementation. Its objective is to introduce students to operating systems with main focus on resource management and interfacing issues with hardware layers. Particular emphasis will be given to process management (processes, threads, CPU scheduling, synchronization, and deadlock), (virtual) memory management (segmentation, paging, swapping, caching) with focus on the interplay between architectural components and software layers. If there is time, we will investigate and discuss these same issues for distributed systems. The course programming assignments will be in Java/C.


Schedule: Biennially

Instructor(s): Robert Signorile

Prerequisites: CSCI2271

Cross listed with:

Comments:

CSCI 3363 Computer Networks Fall 3
Course Description

This course studies computer networks and the services built on top of them. Topics include packet-switch and multi-access networks, routing and flow control, congestion control and quality-of-service, resource sharing, Internet protocols (IP, TCP, BGP), the client-server model and RPC, elements of distributed systems (naming, security, caching, consistency) and the design of network services (peer-to-peer networks, file and web servers, content distribution networks). Coursework involves a significant amount of Java/C programming.


Instructor(s): Robert Signorile

Prerequisites: CSCI2271

Cross listed with:

Comments:

CSCI 3366 Principles of Programming Languages Spring 3
Course Description

Starting with a simple language of expressions, the course develops a sequence of progressively more expressive programming languages keeping in mind the conflicting constraints between the expressiveness of the language and the requirement that it be reliably and efficiently implemented. The course focuses on these essential concepts and the run-time behavior of programs. Type systems play an essential role. By understanding the concepts the student will be able to evaluate the advantages and disadvantages of a language for a given application.


Instructor(s): Robert Muller

Prerequisites: CSCI2245 and CSCI2271

Cross listed with:

Comments: Strong programming skills are required.

CSCI 3367 Compilers Spring 3
Course Description

Compilers are programs that implement high level programming languages by translating programs in such languages into machine code or some other easy to process representation. This course deals with the principles and techniques used in the design of compilers. Topics include parsing, static analysis, translation, memory management and code optimization. This course includes a significant programming project.


Instructor(s): Robert Muller

Prerequisites: CSCI2271 and CSCI2272.

Cross listed with:

Comments:

CSCI 3372 Computer Architecture Spring 3
Course Description

In this course we investigate how computer hardware works and considerations for design of a computer. Topics include instruction programming and control, computer arithmetic, processor design, pipelining, memory hierarchy, input/output, and advanced architecture topics. When registering for this course you must register for CSCI3373 Computer Architecture Lab.


Schedule: Biennially

Instructor(s): Robert Signorile

Prerequisites: CSCI2272

Cross listed with:

Comments:

CSCI 3381 Cryptography Spring 3
Course Description

Can Alice ensure that the message she sends to Bob can be read only by Bob, even if the message is intercepted by an eavesdropper? Can Bob ensure that the message he receives really came from Alice? How can a server verify a client's password without storing sensitive password information? This course studies both the theoretical foundations and implementation of algorithms for private and public key cryptography, digital signatures, cryptographic hash-codes, and authentication schemes. We will consider real world protocols and practices (e.g., SSL and public key certificates) as well as more speculative protocols and methods (electronic elections, quantum cryptography).


Schedule: Biennially

Instructor(s): Howard Straubing

Prerequisites: CSCI2243 and CSCI2244 or equivalent mathematics experience is recommended. CSCI1101 is required.

Cross listed with:

Comments:

CSCI 4911 Readings in Computer Science Fall/Spring 3
Course Description

Independent reading and research for students who wish to study topics not covered in the regular curriculum.


Instructor(s): The Department

Prerequisites: None

Cross listed with:

Comments: Arrangements with a faculty supervisor and the permission of the department are required for registration.

CSCI 4961 Honors Thesis Fall/Spring 3
Course Description

Independent study project for students enrolled in the departmental honors program.


Instructor(s): The Department

Prerequisites: None

Cross listed with:

Comments: Arrangements with a faculty supervisor and the permission of the department are required.