Assistant Professor of Computer Science
▲ indicates offered in the current term
▹ indicates offered in the upcoming term[s]
CSCI 0201 - Data Structures
In this course we will study the ideas and structures helpful in designing algorithms and writing programs for solving large, complex problems. The Java programming language and object-oriented paradigm are introduced in the context of important abstract data types (ADTs) such as stacks, queues, trees, and graphs. We will study efficient implementations of these ADTs, and learn classic algorithms to manipulate these structures for tasks such as sorting and searching. Prior programming experience is expected, but prior familiarity with the Java programming language is not assumed. (One CSCI course at the 0100-level) 3 hrs. lect./lab
Fall 2013, Fall 2014
CSCI 0302 - Algorithms and Complexity ▹
Algorithms and Complexity
This course focuses on the development of correct and efficient algorithmic solutions to computational problems, and on the underlying data structures to support these algorithms. Topics include computational complexity, analysis of algorithms, proof of algorithm correctness, advanced data structures such as balanced search trees, and also important algorithmic techniques including greedy and dynamic programming. The course complements the treatment of NP-completeness in CSCI 0301. (CSCI 0200 and CSCI 0201) 3 hrs. lect./disc.
CSCI 0311 - Artificial Intelligence
Artificial Intelligence (AI) is the study of computational systems that exhibit rational behavior. Applications include strategic game playing, medical diagnosis, speech and handwriting recognition, Internet search, and robotics. Course topics include intelligent agent architectures, search, knowledge representation, logical reasoning, planning, reasoning under uncertainty, machine learning, and perception and action. (CSCI 0200 and CSCI 0201) 3 hrs. lect./lab
CSCI 0314 - Operating Systems
An operating system manages the complex resources of modern computers and provides an interface between the user and the hardware. This course covers the key concepts of operating systems, including process, memory, and storage management; synchronization and deadlock; protection and security; and distributed systems. (CSCI 0200 previously or concurrently, and CSCI 0202) 3 hrs. lect./lab
CSCI 0463 - Cryptology ▹
Topics will be chosen from: classical cryptography, block ciphers and the Advanced Encryption Standard, public key cryptology, public key implementations, cryptographic hash functions, authentication techniques, digital signatures, advanced topics in mathematical cryptology. (CSCI 0301 or CSCI 0302) 3 hrs. lect./lab.
CSCI 0500 - Advanced Study ▹
Individual study for qualified students in more advanced topics in computer science theory, systems, or application areas. Particularly suited for students who enter with advanced standing. (Approval required) 3 hrs. lect.
Fall 2013, Spring 2014, Fall 2014, Spring 2015, Spring 2016
CSCI 1002 - Web Database Systems
Web Database Systems
In this course we will learn how to create an online database. We will cover the basics of database design using ER (Entity-Relation) modeling and SQL programming. We will build an SQL database and learn how to use PHP to create websites that interact with the database. Finally, we will learn how to create Java programs that interact with an SQL database. This course will count as an elective towards the CSCI major in the CSCI 0311-0314 category. (CSCI 0201)