CSE 002 FUNDAMENTALS OF PROGRAMMING
 
Problem-solving and object-oriented programming using Java. Includes laboratory. No prior programming experience needed. All sections will offer Guided Study Groups.
 
CSE 002-110, MW 3:10-4:00 F (lab) 3:10-4:00, Professor James Femister
CSE 002-210, MW 11:10-12:00 F (lab) 11:10-12:00, Professor Brian Chen
CSE 002-211, MW 11:10-12:00 F (lab), 12:10-1:00 Professor Brian Chen
 
CSE 012-010 SURVEY OF COMPUTER SCIENCE, MWF 1:10-2:00, Professor Eric Fouh Mbindi
 
This course provides a project-based exploration of fundamental concepts in computing and "computational thinking." Topics include but are not limited to networks, data visualization, information storage and retrieval, and the popular Python programming language. Each project presents applications of computing in solving real life problems. In this course you will learn to write Python code to visualize data from different sources. You will learn how information is transferred across networks and how to store and retrieve data from relational database management systems. Optional Structured Study Groups will be provided for students who express interest. Guided Study Groups will be offered in this course.
 
CSE 017 DATA STRUCTURES & PROGRAMMING
 
This course is a programming-intensive exploration of software design concepts and implementation techniques. It builds on the student's existing knowledge of fundamental programming. Topics include object-oriented software design, problem-solving strategies, algorithm development, and classic data structures.
 
CSE 017-012, MWF 11:10-12:00, Professor James Femister
CSE 017-010, MWF 10:10-11:00, Professor Eric Fouh Mbindi
 
 There will be weekly mandatory online quizzes and/or homework. One programming is assigned each week. Programming assignments are presented and discussed in-class during lecture. Each assignment covers one of the major topics in the course. There are two 50-minute exams during the semester, and a comprehensive 2-hour final exam at the end of the course.
 
CSE 017-011, MWF 9:10-10:00, Professor Eric Fouh Mbindi
 
 There will be weekly mandatory online quizzes and/or homework. One programming is assigned each week. Programming assignments are presented and discussed in-class during lecture. Each assignment covers one of the major topics in the course. There are two 50-minute exams during the semester, and a comprehensive 2-hour final exam at the end of the course.
 
** NEW COURSE FOR 2017-2018** CSE 098 WOMEN IN TECHNOLOGY, F 2:10-4:00, Professor Daniel Lopresti (Course runs only first half of semester)
 
The technology industry has been the engine of growth for the US economy for the past four decades. Emergent tech companies have shaped all of our lives, and created significant professional and financial opportunities for the leaders of these high growth ventures. Despite the many clear opportunities, women hold a minority of the leadership positions in the tech industry. Why? What can be done to change this? How can the next generation of female tech industry leaders succeed? Prerequisite: permission of instructor.
 
** NEW COURSE FOR 2017-2018** CSE 098/CSB 098 SOFTWARE PRODUCT MANAGMENT, F 2:10-4:00, Professor Daniel Lopresti (Course runs only second half of semester)
 
Managing the product life cycle Writing great software is only half the challenge. Successful companies are built on top of product/market fit - having the right capabilities at the right time in the market. Product management is key to establishing product/market fit. This class will cover the various elements of product management including: Product definition - writing PRDs and MRDs, Competitive analysis, Pricing, Go-to-market channel strategies, Promotion and demand generation. Prerequisite: permission of instructor
 
CSE 109 SYSTEMS SOFTWARE
 
Advanced programming and data structures, including dynamic structures, memory allocation, data organization, symbol tables, hash tables, B-trees, data files. Object-oriented design and implementation of simple assemblers, loaders, interpreters, compilers and translators. Practical methods for implementing medium-scale programs.
 
CSE 109-010, MWF 1:10-2:00 F (lab) 12:10-1:00, Professor Jason Loew
CSE 109-011, MWF 10:10-11:00 F (lab) 11:10-12:00, Professor Jason Loew
 
CSE 160-010 INTRO TO DATA SCIENCE, MWF 10:10-11:00, Professor Brian Davison
 
Interested in understanding the hype about data science, big data, or data analytics? This course introduces you to data science, a fast-growing and interdisciplinary field, focusing on the computational analysis of data to extract knowledge and insight. You will be introduced to the collection, preparation, analysis, modeling, and visualization of data, covering both conceptual and practical issues. Applications of data science across multiple fields are presented, and hands-on use of statistical and data manipulation software is included. The course is open to students from all areas of study; the only prerequisite is some programming experience (automatic if you've taken CSE 2, 12, or BIS 335, or permission of the instructor is available if you can show that you've successfully completed a programming course online, in high school, or elsewhere). 
 
** THIS COURSE REPLACES CSE 261**
CSE 198 FOUNDATIONS OF DISCRETE STRUCTURES AND ALGORITHMS
 
Basic representations used in algorithms: propositional and predicate logic, set operations and functions, relations and their representations, matrices and their representations, graphs and their representations, trees and their representations. Basic formalizations for proving algorithm correctness: logical consequences, induction, structural induction. Basic formalizations for algorithm analysis: counting, pigeonhole principle, permutations. Prerequisite: (Math 021 or Math 031 or Math 51 or Math 76) and (CSE 001 or CSE 002 or CSE 012)
CSE 198-012, TR 10:45-12:00, Professor Ting Wang
CSE 198-013, TR 1:10-2:25, Professor Xiaolei Huang
 
 CSE 202 COMPUTER ORGANIZATION AND ARCHITECTURE
 
Interaction between low-level computer architectural properties and high-level program behaviors: instruction set design; digital logics and assembly language; processor organization; the memory hierarchy; multicore and GPU architectures; and processor interrupt/exception models.
 
CSE 202-010, TR 9:20-10:35, Professor Jason Loew
CSE 202-011, MW 12:45-2:00, Professor Mark Erle
 
CSE 216-010 SOFTWARE ENGINEERING, MW 11:10-12:25, Professor Michael Spear
 
The software life-cycle; life-cycle models; software planning; testing; specification methods; maintenance. Emphasis on team work and large-scale software systems, including oral presentations and written reports.
 
CSE 241-010 DATABASE SYSTEMS
 
Design of large databases: Integration of databases and applications using SQL and JDBC; transaction processing; performance tuning; data mining and data warehouses.
 
CSE 241-010, TR 10:45-12:00, Professor Hank Korth
CSE 241-011, TR 2:35-3:50, Professor Sihong Xie
 
CSE 252-010 COMPUTERS, INTERNET AND SOCIETY, TR 2:35-3:50, Professor Eric Baumer
 
An interactive exploration of the current and future role of computers, the Internet, and related technologies in changing the standard of living, work environments, society and its ethical values. Privacy, security, depersonalization, responsibility, and professional ethics; the role of computer and Internet technologies in changing education, business modalities, collaboration mechanisms, and everyday life. (SS)
 
CSE 264-010 WEB APPLICATIONS, TR 2:35-3:50, Professor James Femister
 
Practical experience in designing and implementing modern Web applications. Concepts, tools, and techniques, including: HTTP, HTML, CSS, DOM, JavaScript, Ajax, PHP, graphic design principles, mobile web development. Not available to students who have credit for IE 275.
 
CSE 280-010 CAPSTONE PROJECT I, MW 8:45-10:00, Professor John Spletzer
 
 First of a two semester capstone course sequence that involves the design, implementation, and evaluation of a computer science software project. Conducted by small student teams working from project definition to final documentation. Each student team has a CSE faculty member serving as its advisor. The first semester emphasis is on project definition, planning and implementation. Communication skills such as technical writing, oral presentations, and use of visual aids are also emphasized. Project work is supplemented by weekly seminars. Prerequisite: junior standing and CSE 216.
 
** NEW COURSE FOR 2017-2018** CSE 298/FIN 298 BLOCKCHAIN, MW 12:45-2:00, Professor Hank Korth
 
Blockchain is the technology underlying Bitcoin, along with other digital currencies, and a technology applicable broadly in finance, accounting, and "smart" contracts. It offers the ability to decentralize financial transactions, automate record keeping, and increase privacy, but it remains controversial. Some describe it as "the most important invention since the Internet", yet others, including the CEO of a leading financial firm, have described Bitcoin as a "fraud" and that CEO has threatened to fire anyone in the firm caught trading it.
 
This course will provide an introduction to the technology underlying blockchain, the current and potential applications of blockchain in business, and the resulting policy issues. The course is designed for students with either some business-course background, some computer-science background, or both. Prerequisite: permission of instructor.
 
CSE 318-010 INTRODUCTION TO THE THEORY OF COMPUTATION, TR 10:45-12:00, Professor Hector Munoz-Avila
 
Formal study of theoretical computational models: finite automata, pushdown automata, and Turing machines. Study of formal languages: regular, context-free, and decidable languages.
 
CSE 326/426 FOUNDATIONS OF MACHINE LEARNING, MW 2:35-3:50, Professor Miaomiao Zhang
** NEW FACULTY MEMBER FOR 2017-2018**
 
An introductory course offers a broad overview of the main techniques in machine learning.  Students will study the basic concepts of advanced machine learning methods as well as their theoretical background. Topics of learning theory (bias/variance tradeoffs; VC theory); supervised learning parametric/nonparametric methods, Bayesian models, support vector machines, neural networks); unsupervised learning (dimensionality reduction, kernel tricks, clustering) and reinforcement learning will be covered.  Also note that this course is a prerequisite for CSE 347 Data Mining.   
 
CSE 327-011 ARTIFICIAL INTELLIGENCE OF THEORY AND PRACTICE, TR 1:10-2:25, Professor Jeff Heflin
 
Introduction to the field of artificial intelligence: Problem solving, knowledge representation, reasoning, planning and machine learning. Use of AI systems or languages. Advanced topics such as natural language processing, vision, robotics, and uncertainty.
 
CSE 343-010/443-010 NETWORK SECURITY, MW 12:45-2:00, Professor Mooi Choo Chuah
 
Overview of network security threats and vulnerabilities. Techniques and tools for detecting, responding to and recovering from security incidents. Fundamentals of cryptography. Hands-on experience with programming techniques for security protocols.
 
**NEW COURSE for 2017-2018** CSE 398/498-014 PRINCIPLES AND IMPLEMENTATION OF INFORMATION PRIVACY, TR 9:20-10:35, Professor Ting Wang
 
With the tremendous success of data-driven services and applications (e.g., personalized recommendation, customized news, targeted ads) follows their immense threat to the privacy of people's sensitive information. This course discusses how to design and implement information systems that respect individuals' data privacy while still enabling high-quality services. Main topics covered in the course include: privacy-aware data publishing, privacy-aware data mining, privacy-aware mobile services, privacy-aware web services, and secure multiparty computation. The course will be a combination of lectures and paper presentations by the students. Students will also pursue a course research project. The final outputs of the project include a presentation and a short report. CSE 398 prerequisite: CSE 347/447, for CSE 498: permission of instructor.
 
**NEW COURSE for 2017-2018** CSE 398/498-010 BIG DATA ANALYTICS, R 1:10-2:25, Professor Daniel Lopresti
 
 In this 3-credit project course, we will gain a practical working knowledge of large- scale data analysis using the popular open source Apache Spark framework. Spark provides a powerful model for distributing programs across clusters of machines and elegantly supports patterns that are commonly employed in big data analytics, including classification, collaborative filtering, and anomaly detection, among others.
 
Working from the course textbook, we will study and program solutions for problems including: music recommender systems; predicting forest cover with decision trees; anomaly detection in network traffic with K-means clustering; understanding Wikipedia with Latent Semantic Analysis; analyzing co-occurrence networks with GraphX; geospatial and temporal data analysis on the New York City Taxi Trips data; estimating financial risk through Monte Carlo simulation; analyzing genomics data and the BDG project; and analyzing neuroimaging data with PySpark and Thunder.
 
Supplemental readings will provide additional background for each application area, but most of the work in the course will involve implementing, studying, and enhancing the programming examples from the textbook. During class, students will take turns presenting their own solutions and helping to lead the discussion. A final project will be required.
 
The Tuesday meeting time is tentative and if needed students will meet with the instructor separately each week at a mutually convenient time, either individually or in small groups.
 
Enrollment in this course is limited and requires permission of the instructor. Please note that this is not a basic course on data mining, cluster computing, or programming in Scala; it assumes you already know something about these topics and/or you can learn them quickly on your own. Contact the instructor, Prof. Dan Lopresti, for details. This course will be taught using one of the new classrooms in Building C.
 
CSE 401-010 ADVANCED COMPUTER ARCHITECTURE, TR 10:45-12:00, Professor Xiaochen Guo
 
Design, analysis and performance of computer architectures; high-speed memory systems; cache design and analysis; modeling cache performance; principle of pipeline processing, performance of pipelined computers; scheduling and control of a pipeline; classification of parallel architectures; systolic and data flow architectures; multiprocessor performance; multiprocessor interconnections and cache coherence.
 
CSE 403-010 ADVANCED OPERATING SYSTEMS, MW 11:10-12:25, Professor Roberto Palmieri
 ** NEW FACULTY MEMBER FOR 2017-2018**
 
Principles of operating systems with emphasis on hardware and software requirements and design methodologies for multi-programming systems. Global topics include the related areas of process management, resource management, and file systems.
 
CSE 409-010 THEORY OF COMPUTATION, TR 10:45-12:00, Professor Hector Munoz-Avila
 
Finite automata. Pushdown automata, Relationship to definition and parsing of formal grammars. Credit will not be given for both CSE 318 and CSE 409.
 
**THIS COURSE REPLACES CSE 441**
CSE 498-010 ADVANCED ALGORITHMS, TR 2:35-3:50, Professor Hector Munoz-Avila
 
Average-case runtime analysis of algorithms. Randomized algorithms and probabilistic analysis of their performance. Analysis of data structures including hash tables, augmented data structures with order statistics. Amortized analysis. Elementary computational geometry. Limits on algorithm space efficiency using PSPACE-completeness theory. Prerequisite: CSE 340 or MATH 340 or permission of instructor.
 

This listing represents our current plan for the semester in question. Course offerings and class times are occasionally subject to change for reasons beyond our control.