Computer Science and Networking Fundamentals
A survey of fundamental data structures for information processing, including lists,
stacks, queues, trees, and graphs. The course explores the implementation of these
data structures (both array-based and linked representations) and examines classic
algorithms that use these structures for tasks such as sorting, searching, and text
compression. The Java programming language will be used to demonstrate the
concepts discussed in lecture, and programming problems must be completed in Java.
Key notions of object-oriented programming, including encapsulation and abstract
data types, are emphasized.
5 Problem sets
Fall 2020
CSCI E-55: Java, Hadoop, Lambda Expressions, and Streams
This course is intended for programmers who want to learn Java. The initial focus is on Java as an all-purpose, object oriented language.
Later, we cover the main features introduced in Java 8 which expanded Java into a functional language.
Tools and applications considered in our explorations include Linux, the open-source platform that is especially valuable for Java developers;
Java tools for generating application program interface (API) documents, such as Javadocs; and unit testing using JUnit.
This course also covers build tools including Java Generics and the MapReduce programming model (MR), and students will use the Hadoop APIs
for solving MR problems We work on a Linux virtual machine, first using the terminal and then moving to a popular, modern
integrated development environment (IDE) running in the virtual environment. This course covers the evolution of
Java as an object-oriented language, from the simplest program, HelloWorld.java, culminating in the major release known as Java 7.
Java 8 took the language through a radical change by supporting functional programming. The second part of this course presents an
introduction to those functional features through several hands-on assignments. Students gain a comprehensive understanding of the language,
its features, its syntax, and its libraries, up through an in-depth study of Threads. We explore some of the most common uses of
Java in today's technical environment.
8 Assignments
Fall 2018
This course covers the fundamental concepts of database systems. Topics include data models (ER, relational, and others);
query languages (relational algebra, SQL, and others); implementation techniques of database management systems
(index structures, concurrency control, recovery, and query processing); management of
semistructured and complex data; distributed and noSQL databases.
5 Problem sets
Spring 2018
CSCI S-40
: Communication Protocols and Internet Architectures
This course provides a structured approach to the design, analysis, and implementation of networks and protocols.
We study various protocols, including TCP/IP, WWW/HTTP, DNS, e-mail/SMTP, multimedia protocols for voice and video (SIP),
protocols for network security, and the IEEE 802 LAN protocol suite. In each case, the protocol's functions and the underlying reference model are discussed.
LAN architecture and design, routing and switching, and the design and analysis of both private networks and the Internet are presented.
5 Problem sets
Summer 2018
CSCI S-40: Secure Mobile Computing
Secure mobile computing explores the threat landscape of mobile computing at the device, communication infrastructure, platform, and application levels.
Students appraise secure mobile computing tools and techniques to implement confidentiality, integrity, and availability of mobile computing data.
Students also review mobile computing communications security and infrastructure security to evaluate eavesdropping and surveillance avoidance techniques
7 labs and final project
Spring 2019