An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 132: Programming in Java (102/4659)
W 04:25-05:15 PM Jan 17-May 01
Connamacher, H
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 132: Programming in Java (105/4660)
R 01:00-01:50 PM Jan 17-May 01
Connamacher, H
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 132: Programming in Java (104/4661)
R 11:30-12:20 PM Jan 17-May 01
Connamacher, H
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 132: Programming in Java (103/4662)
R 10:00-10:50 AM Jan 17-May 01
Connamacher, H
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 132: Programming in Java (100/5426)
MWF 02:15-03:05 PM Jan 17-May 01
Connamacher, H
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 132: Programming in Java (106/11418)
R 02:30-03:20 PM Jan 17-May 01
Connamacher, H
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 132: Programming in Java (107/12457)
R 04:00-04:50 PM Jan 17-May 01
Connamacher, H
An in-depth survey of modern programming language features, computer programming and algorithmic problem solving with an emphasis on the Java language. Computers and code compilation; conditional statements, subprograms, loops, methods; object-oriented design, inheritance and polymorphism, abstract classes and interfaces; types, type systems, generic types, abstract data types, strings, arrays, linked lists; software development, modular code design, unit testing; strings, text and file I/O; GUI components, GUI event handling; threads; comparison of Java to C, C++, and C#.
Offered as CSDS 132 and ECSE 132.
CSDS 133: Introduction to Data Science and Engineering for Majors (100/5370)
TR 10:00-11:15 AM Jan 17-May 01
Ray, S
This course is an introduction to data science and analytics.
In the first half of the course, students will develop a basic understanding of how to manipulate, analyze and visualize large data in a distributed computing environment, with an appreciation of open source development, security and privacy issues.
Case studies and team project assignments in the second half of the course will be used to implement the ideas. Topics covered will include: Overview of large scale parallel and distributed (cloud) computing; file systems and file i/o; open source coding and distributed versioning, data query and retrieval; basic data analysis; visualization; data security, privacy and provenance.
CSDS 221: Full Stack Web Development (100/12207)
M 07:00-09:30 PM Jan 17-May 01
Izadnegahdar, D
An introduction to full stack web development, the course provides foundations in HTML, CSS, and programming in JavaScript. The course introduces front-end technologies and APIs for creating interactive web applications such as Bootstrap, React.js, and Progressive Web Apps, back-end technologies and APIs for creating a web server such as Node.js and Express.js, and database integration technologies such as MySQL and MongoDB. Some background in algorithms, data structures, and databases is helpful but not required.
CSDS 221: Full Stack Web Development (101/12208)
W 07:00-09:00 PM Jan 17-May 01
Izadnegahdar, D
An introduction to full stack web development, the course provides foundations in HTML, CSS, and programming in JavaScript. The course introduces front-end technologies and APIs for creating interactive web applications such as Bootstrap, React.js, and Progressive Web Apps, back-end technologies and APIs for creating a web server such as Node.js and Express.js, and database integration technologies such as MySQL and MongoDB. Some background in algorithms, data structures, and databases is helpful but not required.
CSDS 233: Introduction to Data Structures (100/4637)
MW 03:20-04:35 PM Jan 17-May 01
Connamacher, H; Foreback, D
Different representations of data: lists, stacks and queues, trees, graphs, and files. Manipulation of data: searching and sorting, hashing, recursion and higher order functions. Abstract data types, templating, and the separation of interface and implementation. Introduction to asymptotic analysis. The Java language is used to illustrate the concepts and as an implementation vehicle throughout the course.
Offered as CSDS 233 and ECSE 233.
CSDS 281: Logic Design and Computer Organization (100/5270)
TR 10:00-11:15 AM Jan 17-May 01
Gurkan Cavusoglu, E
Fundamentals of digital systems in terms of both computer organization and logic level design. Organization of digital computers; information representation; boolean algebra; analysis and synthesis of combinational and sequential circuits; datapaths and register transfers; instruction sets and assembly language; input/output and communication; memory.
Offered as CSDS 281 and ECSE 281.
CSDS 281: Logic Design and Computer Organization (101/5274)
T 01:00-01:50 PM Jan 17-May 01
Gurkan Cavusoglu, E
Fundamentals of digital systems in terms of both computer organization and logic level design. Organization of digital computers; information representation; boolean algebra; analysis and synthesis of combinational and sequential circuits; datapaths and register transfers; instruction sets and assembly language; input/output and communication; memory.
Offered as CSDS 281 and ECSE 281.
CSDS 281: Logic Design and Computer Organization (102/5278)
W 10:35-11:25 AM Jan 17-May 01
Gurkan Cavusoglu, E
Fundamentals of digital systems in terms of both computer organization and logic level design. Organization of digital computers; information representation; boolean algebra; analysis and synthesis of combinational and sequential circuits; datapaths and register transfers; instruction sets and assembly language; input/output and communication; memory.
Offered as CSDS 281 and ECSE 281.
CSDS 281: Logic Design and Computer Organization (103/5282)
W 11:40-12:30 PM Jan 17-May 01
Gurkan Cavusoglu, E
Fundamentals of digital systems in terms of both computer organization and logic level design. Organization of digital computers; information representation; boolean algebra; analysis and synthesis of combinational and sequential circuits; datapaths and register transfers; instruction sets and assembly language; input/output and communication; memory.
Offered as CSDS 281 and ECSE 281.
CSDS 285: Linux Tools and Scripting (100/5496)
TR 05:30-06:45 PM Jan 17-May 01
Loui, R
A fast paced introduction to linux that brings the project-oriented student from little or no linux experience to be fully capable of using scripting languages as tools in a linux command-line environment. This includes systems administration and agile web services with server-side scripting and server-side management. This also involves data cleaning, scraping, wrangling, and processing user data with regular expressions. Current main languages include php, bash, awk, with some client-side javascript, and very brief looks at tcl/lua, powershell, and python. Tools include vim, make, grep/sed, and curl/wget. Recommended preparation: one year of computer programming and familiarity with raw HTML/CSS.
CSDS 285: Linux Tools and Scripting (110/5517)
W 11:40-12:30 PM Jan 17-May 01
Loui, R
A fast paced introduction to linux that brings the project-oriented student from little or no linux experience to be fully capable of using scripting languages as tools in a linux command-line environment. This includes systems administration and agile web services with server-side scripting and server-side management. This also involves data cleaning, scraping, wrangling, and processing user data with regular expressions. Current main languages include php, bash, awk, with some client-side javascript, and very brief looks at tcl/lua, powershell, and python. Tools include vim, make, grep/sed, and curl/wget. Recommended preparation: one year of computer programming and familiarity with raw HTML/CSS.
CSDS 285: Linux Tools and Scripting (111/5518)
W 02:15-03:05 PM Jan 17-May 01
Loui, R
A fast paced introduction to linux that brings the project-oriented student from little or no linux experience to be fully capable of using scripting languages as tools in a linux command-line environment. This includes systems administration and agile web services with server-side scripting and server-side management. This also involves data cleaning, scraping, wrangling, and processing user data with regular expressions. Current main languages include php, bash, awk, with some client-side javascript, and very brief looks at tcl/lua, powershell, and python. Tools include vim, make, grep/sed, and curl/wget. Recommended preparation: one year of computer programming and familiarity with raw HTML/CSS.
CSDS 290: Introduction to Computer Game Design and Implementation (100/5286)
TR 08:30-09:45 AM Jan 17-May 01
Fu, M
This class begins with an examination of the history of video games and of game design. Games will be examined in a systems context to understand gaming and game design fundamentals. Various topics relating directly to the implementation of computer games will be introduced including graphics, animation, artificial intelligence, user interfaces, the simulation of motion, sound generation, and networking. Extensive study of past and current computer games will be used to illustrate course concepts. Individual and group projects will be used throughout the semester to motivate, illustrate and demonstrate the course concepts and ideas. Group game development and implementation projects will culminate in classroom presentation and evaluation.
Offered as CSDS 290 and ECSE 290.
CSDS 293: Software Craftsmanship (100/11443)
MW 03:20-04:35 PM Jan 17-May 01
Liberatore, V
A course to improve programming skills, software quality, and the software development process. Software design; Version control; Control issues and routines; Pseudo-code programming process and developer testing; Defensive programming; Classes; Debugging; Self-documenting code; Refactoring.
Offered as CSDS 293 and CSDS 293N.
CSDS 293: Software Craftsmanship (101/12209)
F 10:40-12:30 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293: Software Craftsmanship (102/12210)
F 02:15-04:05 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293: Software Craftsmanship (103/12312)
M 10:35-12:25 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293: Software Craftsmanship (104/12313)
W 10:35-12:25 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293: Software Craftsmanship (105/12406)
T 02:30-04:20 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293: Software Craftsmanship (106/12407)
M 01:15-03:05 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293: Software Craftsmanship (107/12408)
R 02:30-04:20 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293N: Software Craftsmanship (100/11444)
MW 03:20-04:35 PM Jan 17-May 01
Liberatore, V
A course to improve programming skills, software quality, and the software development process. Software design; Version control; Control issues and routines; Pseudo-code programming process and developer testing; Defensive programming; Classes; Debugging; Self-documenting code; Refactoring.
Offered as CSDS 293 and CSDS 293N.
CSDS 293N: Software Craftsmanship (101/12211)
F 10:40-12:30 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293N: Software Craftsmanship (102/12212)
F 02:15-04:05 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293N: Software Craftsmanship (103/12314)
M 10:35-12:25 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293N: Software Craftsmanship (104/12315)
W 10:35-12:25 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293N: Software Craftsmanship (105/12409)
T 02:30-04:20 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293N: Software Craftsmanship (106/12411)
M 01:15-03:05 PM Jan 17-May 01
Liberatore, V
Java
CSDS 293N: Software Craftsmanship (107/12412)
R 02:30-04:20 PM Jan 17-May 01
Liberatore, V
Java
CSDS 302: Discrete Mathematics (101/5497)
MW 12:45-02:00 PM Jan 17-May 01
Xu, S
A general introduction to basic mathematical terminology and the techniques of abstract mathematics in the context of discrete mathematics. Topics introduced are mathematical reasoning, Boolean connectives, deduction, mathematical induction, sets, functions and relations, algorithms, graphs, combinatorial reasoning.
Offered as CSDS 302, ECSE 302 and MATH 304.
CSDS 310: Algorithms (100/4636)
MW 11:40-12:30 PM Jan 17-May 01
Connamacher, H
This section for CS majors only.
CSDS 310: Algorithms (101/11446)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310: Algorithms (102/11468)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310: Algorithms (103/11469)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310: Algorithms (104/11470)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310: Algorithms (105/11472)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310: Algorithms (106/11474)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310: Algorithms (107/12430)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (100/4635)
MW 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (101/11475)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (102/11476)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (103/11477)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (104/11478)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (105/11479)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (106/11480)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 310N: Algorithms (107/12431)
F 11:40-12:30 PM Jan 17-May 01
Connamacher, H
Fundamentals in algorithm design and analysis. Loop invariants, asymptotic notation, recurrence relations, sorting algorithms, divide-and-conquer, dynamic programming, greedy algorithms, basic graph algorithms.
Offered as CSDS 310 and CSDS 310N.
CSDS 312: Introduction to Data Science Systems (100/4655)
MW 05:30-06:45 PM Jan 17-May 01
Gajurel, S
An introduction to the software and hardware architecture of data science systems, with an emphasis on Operating Systems and Computer Architecture that are relevant to Data Sciences systems. At the end of the course, the student should understand the principles and architecture of storage systems, file systems (especially, HDFS), memory hierarchy, and GPU. The student should have carried out projects in these areas, and should be able to critically compare various design decisions in terms of capability and performance.
CSDS 314: Computer Architecture (100/5290)
MW 04:50-06:05 PM Jan 17-May 01
Weyer, D
This course provides students the opportunity to study and evaluate a modern computer architecture design. The course covers topics in fundamentals of computer design, performance, cost, instruction set design, processor implementation, control unit, pipelining, communication and network, memory hierarchy, computer arithmetic, input-output, and an introduction to RISC and super-scalar processors.
Offered as CSDS 314 and ECSE 314.
CSDS 325: Computer Networks I (100/4640)
TR 01:00-02:15 PM Jan 17-May 01
Chaudhary, V; Wang, A
An introduction to computer networks and the Internet. Applications: http, ftp, e-mail, DNS, socket programming. Transport: UDP, TCP, reliable data transfer, and congestion control. Network layer: IP, routing, and NAT. Link layer: taxonomy, Ethernet, 802.11.
Offered as CSDS 325 and CSDS 325N.
CSDS 325N: Computer Networks I (100/4641)
TR 01:00-02:15 PM Jan 17-May 01
Chaudhary, V; Wang, A
An introduction to computer networks and the Internet. Applications: http, ftp, e-mail, DNS, socket programming. Transport: UDP, TCP, reliable data transfer, and congestion control. Network layer: IP, routing, and NAT. Link layer: taxonomy, Ethernet, 802.11.
Offered as CSDS 325 and CSDS 325N.
CSDS 335: Data Mining for Big Data (100/5501)
TR 02:30-03:45 PM Jan 17-May 01
Li, J
With the unprecedented rate at which data is being collected today in almost all fields of human endeavor, there is an emerging economic and scientific need to extract useful information from it. Data mining is the process of automatic discovery of patterns, changes, associations and anomalies in massive databases, and is a highly interdisciplinary field representing the confluence of several disciplines, including database systems, data warehousing, machine learning, statistics, algorithms, data visualization, and high-performance computing. This course is an introduction to the commonly used data mining techniques.
In the first part of the course, students will develop a basic understanding of the basic concepts in data mining such as frequent pattern mining, association rule mining, basic techniques for data preprocessing such as normalization, regression, and classic matrix decomposition methods such as SVD, LU, and QR decompositions. In the second part of the course, students will develop a basic understanding of classification and clustering and be able to apply classic methods such as k-means, hierarchical clustering methods, nearest neighbor methods, association based classifiers. In the third part of the course, students will have a chance to study more advanced data mining applications such as feature selection in high-dimensional data, dimension reduction, and mining biological datasets.
CSDS 337: Compiler Design (100/4654)
MW 03:20-04:35 PM Jan 17-May 01, W 02:15-03:05 PM Jan 17-May 01
Chaudhary, V
Design and implementation of compilers and other language processors. Scanners and lexical analysis; regular expressions and finite automata; scanner generators; parsers and syntax analysis; context free grammars; parser generators; semantic analysis; intermediate code generation; runtime environments; code generation; machine independent optimizations; data flow and dependence analysis. There will be a significant programming project involving the use of compiler tools and software development tools and techniques.
Offered as CSDS 337 and ECSE 337.
CSDS 338: Intro to Operating Systems and Concurrent Programming (100/4653)
TR 04:00-05:15 PM Jan 17-May 01
Loui, R
This section for CS majors only.
CSDS 338: Intro to Operating Systems and Concurrent Programming (101/4663)
W 05:30-06:20 PM Jan 17-May 01
Loui, R
Intro to OS: OS Structures, processes, threads, CPU scheduling, deadlocks, memory management, file system implementations, virtual machines, cloud computing. Concurrent programming: fork, join, concurrent statement, critical section problem, safety and liveness properties of concurrent programs, process synchronization algorithms, semaphores, monitors. UNIX systems programming: system calls, UNIX System V IPCs, threads, RPCs, shell programming.
Offered as CSDS 338, ECSE 338, CSDS 338N and ECSE 338N.
CSDS 338N: Intro to Operating Systems and Concurrent Programming (100/4664)
TR 04:00-05:15 PM Jan 17-May 01
Loui, R
Intro to OS: OS Structures, processes, threads, CPU scheduling, deadlocks, memory management, file system implementations, virtual machines, cloud computing. Concurrent programming: fork, join, concurrent statement, critical section problem, safety and liveness properties of concurrent programs, process synchronization algorithms, semaphores, monitors. UNIX systems programming: system calls, UNIX System V IPCs, threads, RPCs, shell programming.
Offered as CSDS 338, ECSE 338, CSDS 338N and ECSE 338N.
CSDS 338N: Intro to Operating Systems and Concurrent Programming (101/4665)
W 05:30-06:20 PM Jan 17-May 01
Loui, R
Intro to OS: OS Structures, processes, threads, CPU scheduling, deadlocks, memory management, file system implementations, virtual machines, cloud computing. Concurrent programming: fork, join, concurrent statement, critical section problem, safety and liveness properties of concurrent programs, process synchronization algorithms, semaphores, monitors. UNIX systems programming: system calls, UNIX System V IPCs, threads, RPCs, shell programming.
Offered as CSDS 338, ECSE 338, CSDS 338N and ECSE 338N.
CSDS 341: Introduction to Database Systems (100/4656)
MW 12:45-02:00 PM Jan 17-May 01
Connamacher, H; Foreback, D
Relational model, ER model, relational algebra and calculus, SQL, OBE, security, views, files and physical database structures, query processing and query optimization, normalization theory, concurrency control, object relational systems, multimedia databases, Oracle SQL server, Microsoft SQL server.
Offered as CSDS 341 and CSDS 341N.
CSDS 341N: Introduction to Database Systems (100/4657)
MW 12:45-02:00 PM Jan 17-May 01
Connamacher, H; Foreback, D
Relational model, ER model, relational algebra and calculus, SQL, OBE, security, views, files and physical database structures, query processing and query optimization, normalization theory, concurrency control, object relational systems, multimedia databases, Oracle SQL server, Microsoft SQL server.
Offered as CSDS 341 and CSDS 341N.
CSDS 343: Theoretical Computer Science (100/5354)
MWF 09:30-10:20 AM Jan 17-May 01
Shkurti, T
Introduction to different classes of automata and their correspondence to different classes of formal languages and grammars, computability, complexity and various proof techniques.
Offered as CSDS 343 and MATH 343.
CSDS 344: Computer Security (100/12272)
M 07:00-09:30 PM Jan 17-May 01
Omeike, S
General types of security attacks; approaches to prevention; secret key and public key cryptography; message authentication and hash functions; digital signatures and authentication protocols; information gathering; password cracking; spoofing; session hijacking; denial of service attacks; buffer overruns; viruses, worms, etc., principles of secure software design, threat modeling; access control; least privilege; storing secrets; socket security; firewalls; intrusions; auditing; mobile security. Recommended preparation: CSDS 132, CSDS 293, CSDS 325 and CSDS 338.
Offered as CSDS 344 and CSDS 444.
CSDS 345: Programming Language Concepts (100/4643)
MWF 10:35-11:25 AM Jan 17-May 01
Connamacher, H
This section is for CS majors only.
CSDS 345N: Programming Language Concepts (100/4644)
MWF 10:35-11:25 AM Jan 17-May 01
Connamacher, H
This course examines the four main programming paradigms: imperative, object-oriented, functional, and logical. It is assumed that students will come to the course with significant exposure to object-oriented programming and some exposure to imperative programming. The course will teach the functional paradigm in depth, enhance the students' knowledge of the object-oriented and imperative paradigms, and introduce the logical paradigm. The course will explore language syntax, semantics, names/scopes, types, expressions, assignment, subprograms, abstraction and inheritance. This exploration will have several forms. Students will study the programming language concepts at a theoretical level, use the concepts in functional language programming, and implement the concepts by designing language interpreters.
Offered as CSDS 345 and CSDS 345N.
CSDS 351: Introduction to Data Engineering (100/12262)
TR 10:00-11:15 AM Jan 17-May 01
Manasseh, C
This course is an introduction to technologies and methodologies for developing scalable data architectures, streamlining data acquisition from several disparate sources as well as safeguarding data quality. The course provides an in-depth knowledge of distributed and parallel cloud systems, and sophisticated tools to build high-performance data pipelines for ingesting, transforming, and analyzing data. Recommended preparation: familiarity with the Python programming language.
CSDS 356: Data Privacy (100/4638)
TR 01:00-02:15 PM Jan 17-May 01
Ayday, E
Introduction to privacy, economics and incentives, crypto-based solution for privacy, hiding data from the database user, hiding access patterns from the database owner, anonymous routing and TOR, privacy in online social networks, privacy in cellular and Wi-Fi networks, location privacy, privacy in e-cash systems, privacy in e-voting, genomic privacy.
Offered as CSDS 356 and CSDS 456.
CSDS 361: Biomedical Image Processing and Analysis (100/12452)
TR 02:30-03:45 PM Jan 17-May 01
Li, S; Wilson, D
Principles of image processing and analysis with applications to clinical and biomedical research. Topics include image filtering, registration, morphological processing, segmentation, classification, and 3D image visualization. There will be interesting, realistic computer projects in Matlab.
Offered as CSDS 361, CSDS 461, EBME 361, and EBME 461.
CSDS 364: Computational Perception (100/5503)
TR 04:00-05:15 PM Jan 17-May 01
Lewicki, M
An introduction to the information processing and computational algorithms that underlie perception. The course focuses on vision and audition but also covers other senses and various types of perceptual processing in biological systems. The motivating question is: What are the fundamental computational problems faced by perceptual systems in complex environments? The course draws from fields in engineering and the study of biological perception. Specific topics include signal detection and processing; sound localization; motion perception and estimation; sensory coding; perception of structure; active perception; perceptual invariance; attention; object, sound and speech recognition; visual and auditory scene analysis.
Offered as CSDS 364 and CSDS 464.
CSDS 376: Mobile Robotics (101/5515)
Lee, G
Design of software systems for mobile robot control, including: motion control; sensory processing; localization and mapping; mobile-robot planning and navigation; and implementation of goal-directed behaviors. The course has a heavy lab component involving a sequence of design challenges and competitions performed in teams.
Offered as CSDS 376 and ECSE 376.
CSDS 377: Introduction to Connected Devices (100/5294)
MW 04:50-06:05 PM Jan 17-May 01
Barendt, N
Introduction to Connected Devices (e.g., Internet of Things). Undergraduates work in pairs to build a complete connected-device system, an embedded device with wireless networking, cloud and web, and mobile, and then develop hands-on experience with systems-level aspects of the connected-device system, including analytics, remote firmware update, load testing, and essential security. Students learn about current architectures, languages, and technologies, such as Pub/Sub (MQTT), Python, Objective-C, Python Django, JavaScript, HTML/CSS, and Bluetooth Low Energy.
Offered as CSDS 377 and ECSE 377.
CSDS 386: Quantum Computing, Information, and Devices (100/5504)
MW 03:20-04:35 PM Jan 17-May 01
Berezovsky, J; Papachristou, C; Szarek, S; Xu, S
Assigned class time slots subject to change. If you are considering enrolling in this course and have a potential schedule conflict, please contact the instructor directly.
CSDS 391: Introduction to Artificial Intelligence (100/4647)
TR 02:30-03:45 PM Jan 17-May 01
Kuppannagari, S
This section for CS majors only.
CSDS 393: Software Engineering (100/4648)
TR 05:30-06:45 PM Jan 17-May 01
Jimenez Segovia, L
Topics: Introduction to software engineering; software lifecycle models; development team organization and project management; requirements analysis and specification techniques; software design techniques; programming practices; software validation techniques; software maintenance practices; software engineering ethics. Undergraduates work in teams to complete a significant software development project. Graduate students are required to complete a research project.
Offered as CSDS 393, CSDS 393N, and CSDS 493.
CSDS 393N: Software Engineering (100/4649)
TR 05:30-06:45 PM Jan 17-May 01
Jimenez Segovia, L
Topics: Introduction to software engineering; software lifecycle models; development team organization and project management; requirements analysis and specification techniques; software design techniques; programming practices; software validation techniques; software maintenance practices; software engineering ethics. Undergraduates work in teams to complete a significant software development project. Graduate students are required to complete a research project.
Offered as CSDS 393, CSDS 393N, and CSDS 493.
CSDS 395: Senior Project in Computer Science (100/4652)
TR 11:30-12:45 PM Jan 17-May 01
Xu, S
Capstone course for computer science seniors. Material from previous and concurrent courses used to solve computer programming problems and to develop software systems. Professional engineering topics such as project management, engineering design, communications, and professional ethics. Requirements include periodic reporting of progress, plus a final oral presentation and written report. Scheduled formal project presentations during last week of classes.
CSDS 396: Independent Projects (100/12330)
Wu, Y
Independent projects in Computer and Data Science.
CSDS 396: Independent Projects (101/12896)
Xu, S
Independent projects in Computer and Data Science.
CSDS 398: Senior Project in Data Science (100/11445)
TR 11:30-12:45 PM Jan 17-May 01
Xu, S
Capstone course for data science seniors. Material from previous and concurrent courses used to apply tools of the data science lifecycle to practical applications. Professional engineering topics such as project management, engineering design, communications, and professional ethics. Requirements include periodic reporting of progress, plus a final oral presentation and written report. Scheduled formal project presentations during the last week of classes.
CSDS 400T: Graduate Teaching I (100/4970)
Liberatore, V
This course will provide the Ph.D. candidate with experience in teaching undergraduate or graduate students. The experience is expected to involve direct student contact but will be based upon the specific departmental needs and teaching obligations. This teaching experience will be conducted under the supervision of the faculty member who is responsible for the course, but the academic advisor will assess the educational plan to ensure that it provides an educational experience for the student. Students in this course may be expected to perform one or more of the following teaching related activities: grading homeworks, quizzes, and exams, having office hours for students, tutoring students. Recommended preparation: Ph.D. student in CSDS department.
CSDS 401: Foundations of Computer Science (500/5572)
W 08:00-09:00 PM Jan 17-May 01
Xu, S
Introduction to computer science for graduate level students. Covers the basic concepts of data structures and discrete mathematics and combines theory and practice. Representations and manipulation of data, abstract data types, generics, separation of interface and implementation. Mathematical reasoning, Boolean connectives, induction, sets, algorithms, graphs, and combinatorial reasoning.
CSDS 401: Foundations of Computer Science (777/5577)
Ganesan, A
Introduction to computer science for graduate level students. Covers the basic concepts of data structures and discrete mathematics and combines theory and practice. Representations and manipulation of data, abstract data types, generics, separation of interface and implementation. Mathematical reasoning, Boolean connectives, induction, sets, algorithms, graphs, and combinatorial reasoning.
CSDS 425: Computer Networks I (100/4642)
TR 01:00-02:15 PM Jan 17-May 01
Chaudhary, V; Wang, A
An introduction to computer networks and the Internet. Applications: http, ftp, e-mail, DNS, socket programming. Transport: UDP, TCP, reliable data transfer, and congestion control. Network layer: IP, routing and NAT. Link layer: taxonomy, Ethernet, 802.11. Recommended preparation: CSDS 338.
CSDS 425: Computer Networks I (777/11487)
Staff
An introduction to computer networks and the Internet. Applications: http, ftp, e-mail, DNS, socket programming. Transport: UDP, TCP, reliable data transfer, and congestion control. Network layer: IP, routing and NAT. Link layer: taxonomy, Ethernet, 802.11. Recommended preparation: CSDS 338.
CSDS 425: Computer Networks I (500/11520)
T 08:00-09:00 PM Jan 17-May 01
Chaudhary, V; Wang, A
An introduction to computer networks and the Internet. Applications: http, ftp, e-mail, DNS, socket programming. Transport: UDP, TCP, reliable data transfer, and congestion control. Network layer: IP, routing and NAT. Link layer: taxonomy, Ethernet, 802.11. Recommended preparation: CSDS 338.
CSDS 433: Database Systems (100/4651)
TR 08:30-09:45 AM Jan 17-May 01
Wu, Y
Basic issues in file processing and database management systems. Physical data organization. Relational databases. Database design. Relational Query Languages, SQL. Query languages. Query optimization. Database integrity and security. Object-oriented databases. Object-oriented Query Languages, OQL. Recommended preparation: MATH 304.
CSDS 435: Data Mining (100/5502)
TR 02:30-03:45 PM Jan 17-May 01
Li, J
Data Mining is the process of discovering interesting knowledge from large amounts of data stored either in databases, data warehouses, or other information repositories. Topics to be covered includes: Data Warehouse and OLAP technology for data mining, Data Preprocessing, Data Mining Primitives, Languages, and System Architectures, Mining Association Rules from Large Databases, Classification and Prediction, Cluster Analysis, Mining Complex Types of Data, and Applications and Trends in Data Mining.
CSDS 435: Data Mining (777/5550)
Gupta, M
Data Mining is the process of discovering interesting knowledge from large amounts of data stored either in databases, data warehouses, or other information repositories. Topics to be covered includes: Data Warehouse and OLAP technology for data mining, Data Preprocessing, Data Mining Primitives, Languages, and System Architectures, Mining Association Rules from Large Databases, Classification and Prediction, Cluster Analysis, Mining Complex Types of Data, and Applications and Trends in Data Mining.
CSDS 435: Data Mining (500/11519)
R 08:00-09:00 PM Jan 17-May 01
Li, J
Data Mining is the process of discovering interesting knowledge from large amounts of data stored either in databases, data warehouses, or other information repositories. Topics to be covered includes: Data Warehouse and OLAP technology for data mining, Data Preprocessing, Data Mining Primitives, Languages, and System Architectures, Mining Association Rules from Large Databases, Classification and Prediction, Cluster Analysis, Mining Complex Types of Data, and Applications and Trends in Data Mining.
CSDS 440: Machine Learning (777/5552)
Chandra, P
Machine learning is a subfield of Artificial Intelligence that is concerned with the design and analysis of algorithms that "learn" and improve with experience, While the broad aim behind research in this area is to build systems that can simulate or even improve on certain aspects of human intelligence, algorithms developed in this area have become very useful in analyzing and predicting the behavior of complex systems. Machine learning algorithms have been used to guide diagnostic systems in medicine, recommend interesting products to customers in e-commerce, play games at human championship levels, and solve many other very complex problems. This course is focused on algorithms for machine learning: their design, analysis and implementation. We will study different learning settings, including supervised, semi-supervised and unsupervised learning. We will study different ways of representing the learning problem, using propositional, multiple-instance and relational representations. We will study the different algorithms that have been developed for these settings, such as decision trees, neural networks, support vector machines, k-means, harmonic functions and Bayesian methods. We will learn about the theoretical tradeoffs in the design of these algorithms, and how to evaluate their behavior in practice. At the end of the course, you should be able to:
--Recognize situations where machine learning algorithms are applicable;
--Understand, represent and formulate the learning problem;
--Apply the appropriate algorithm(s), or if necessary, design your own, with an understanding of the tradeoffs involved;
--Correctly evaluate the behavior of the algorithm when solving the problem.
CSDS 442: Causal Learning from Data (100/12388)
TR 01:00-02:15 PM Jan 17-May 01
Podgurski, H
This course introduces key concepts and techniques for characterizing, from observational or experimental study data and from background information, the causal effect of a specific treatment, exposure, or intervention (e.g., a medical treatment) upon an outcome of interest (e.g., disease status). The fundamental problem of causal inference is the impossibility of observing the effects of different and incompatible treatments on the same individual or unit. This problem is overcome by estimating an average causal effect over a study population. Making valid causal inferences with observational data is especially challenging, because of the greater potential for biases (confounding bias, selection bias, and measurement bias) that can badly distort causal effect estimates. Consequently, this topic has been the focus of intense cross-disciplinary research in recent years. Causal inference techniques will be illustrated by applications in several fields such as computer science, engineering, medicine, public health, biology, genomics, neuroscience, economics, and social science. Course grading will be based on quizzes, homeworks, a class presentation, and a causal data analysis project.
Specific topics: treatments, exposures, and interventions; causal effects and causal effect measures; confounding bias; potential outcomes and counterfactuals; randomized experiments; observational studies; causal directed acyclic graphs (DAGs); exchangeability and conditional exchangeability; effect modification; causal interactions; nonparametric structural equations; Pearl's Back-Door Criterion, Front-Door Criterion, and related results; covariate adjustment; matching on covariates; selection bias; measurement bias; instrumental variables; causal modeling; inverse probability weighting; marginal structural models; standardization; structural nested models; outcome regression; propensity scores; sensitivity analysis.
CSDS 444: Computer Security (100/12273)
M 07:00-09:30 PM Jan 17-May 01
Omeike, S
General types of security attacks; approaches to prevention; secret key and public key cryptography; message authentication and hash functions; digital signatures and authentication protocols; information gathering; password cracking; spoofing; session hijacking; denial of service attacks; buffer overruns; viruses, worms, etc., principles of secure software design, threat modeling; access control; least privilege; storing secrets; socket security; firewalls; intrusions; auditing; mobile security. Recommended preparation: CSDS 132, CSDS 293, CSDS 325 and CSDS 338.
Offered as CSDS 344 and CSDS 444.
CSDS 456: Data Privacy (100/4639)
TR 01:00-02:15 PM Jan 17-May 01
Ayday, E
Introduction to privacy, economics and incentives, crypto-based solution for privacy, hiding data from the database user, hiding access patterns from the database owner, anonymous routing and TOR, privacy in online social networks, privacy in cellular and Wi-Fi networks, location privacy, privacy in e-cash systems, privacy in e-voting, genomic privacy.
Offered as CSDS 356 and CSDS 456.
CSDS 459: Bioinformatics for Systems Biology (100/4646)
MW 12:45-02:00 PM Jan 17-May 01
Koyuturk, M
Description of omic data (biological sequences, gene expression, protein-protein interactions, protein-DNA interactions, protein expression, metabolomics, biological ontologies), regulatory network inference, topology of regulatory networks, computational inference of protein-protein interactions, protein interaction databases, topology of protein interaction networks, module and protein complex discovery, network alignment and mining, computational models for network evolution, network-based functional inference, metabolic pathway databases, topology of metabolic pathways, flux models for analysis of metabolic networks, network integration, inference of domain-domain interactions, signaling pathway inference from protein interaction networks, network models and algorithms for disease gene identification, identification of dysregulated subnetworks network-based disease classification.
Offered as CSDS 459 and SYBB 459.
CSDS 461: Biomedical Image Processing and Analysis (100/12453)
TR 02:30-03:45 PM Jan 17-May 01
Li, S; Wilson, D
Principles of image processing and analysis with applications to clinical and biomedical research. Topics include image filtering, registration, morphological processing, segmentation, classification, and 3D image visualization. There will be interesting, realistic computer projects in Matlab.
Offered as CSDS 361, CSDS 461, EBME 361, and EBME 461.
CSDS 464: Computational Perception (100/5499)
TR 04:00-05:15 PM Jan 17-May 01
Lewicki, M
An introduction to the information processing and computational algorithms that underlie perception. The course focuses on vision and audition but also covers other senses and various types of perceptual processing in biological systems. The motivating question is: What are the fundamental computational problems faced by perceptual systems in complex environments? The course draws from fields in engineering and the study of biological perception. Specific topics include signal detection and processing; sound localization; motion perception and estimation; sensory coding; perception of structure; active perception; perceptual invariance; attention; object, sound and speech recognition; visual and auditory scene analysis.
Offered as CSDS 364 and CSDS 464.
CSDS 465: Computer Vision (777/11485)
Staff
The goal of computer vision is to create visual systems that recognize objects and recover structures in complex 3D scenes. This course emphasizes both the science behind our understanding of the fundamental problems in vision and the engineering that develops mathematical models and inference algorithms to solve these problems. Specific topics include feature detection, matching, and classification; visual representations and dimensionality reduction; motion detection and optical flow; image segmentation; depth perception, multi-view geometry, and 3D reconstruction; shape and surface perception; visual scene analysis and object recognition.
Offered as CSDS 465 and ECSE 465.
CSDS 476: Mobile Robotics (101/5516)
Lee, G
Design of software systems for mobile robot control, including: motion control; sensory processing; localization and mapping; mobile-robot planning and navigation; and implementation of goal-directed behaviors. The course has a heavy lab component involving a sequence of design challenges and competitions performed in teams.
Offered as CSDS 476 and ECSE 476.
CSDS 477: Advanced Algorithms (100/4634)
MWF 11:40-12:30 PM Jan 17-May 01
Liberatore, V
Design and analysis of efficient algorithms, with emphasis on network flow, combinatorial optimization, and randomized algorithms. Linear programming: duality, complementary slackness, total unimodularity. Minimum cost flow: optimality conditions, algorithms, applications. Game theory: two-person zero-sum games, minimax theorems. Probabilistic analysis and randomized algorithms: examples and lower bounds. Approximation algorithms for NP-hard problems: examples, randomized rounding of linear programs.
CSDS 478: Computational Neuroscience (100/11412)
TR 11:30-12:45 PM Jan 17-May 01
Thomas, P
Computer simulations and mathematical analysis of neurons and neural circuits, and the computational properties of nervous systems. Students are taught a range of models for neurons and neural circuits, and are asked to implement and explore the computational and dynamic properties of these models. The course introduces students to dynamical systems theory for the analysis of neurons and neural learning, models of brain systems, and their relationship to artificial and neural networks. Term project required. Students enrolled in MATH 478 will make arrangements with the instructor to attend additional lectures and complete additional assignments addressing mathematical topics related to the course. Recommended preparation: MATH 223 and MATH 224 or BIOL 300 and BIOL 306.
Offered as BIOL 378, COGS 378, MATH 378, BIOL 478, CSDS 478, EBME 478, ECSE 478, MATH 478 and NEUR 478.
CSDS 486: Quantum Computing, Information, and Devices (100/5506)
MW 03:20-04:35 PM Jan 17-May 01
Berezovsky, J; Papachristou, C; Szarek, S; Xu, S
Assigned class time slots subject to change. If you are considering enrolling in this course and have a potential schedule conflict, please contact the instructor directly.
This course is a graduate-level introduction to Artificial Intelligence (AI), the discipline of designing intelligent systems, and focuses on probabilistic graphical models. These models can be applied to a wide variety of settings from data analysis to machine learning to robotics. The models allow intelligent systems to represent uncertainties in an environment or problem space in a compact way and reason intelligently in a way that makes optimal use of available information and time. The course covers directed and undirected probabilistic graphical models, latent variable models, associated exact and approximate inference algorithms, and learning in both discrete and continuous problem spaces. Practical applications are covered throughout the course.
CSDS 499: Algorithmic Robotics (100/11267)
MW 12:45-02:00 PM Jan 17-May 01
Cavusoglu, C
This course introduces basic algorithmic techniques in robotic perception and planning. Course is divided into two parts. The first part introduces probabilistic modeling of robotic motion and sensing, Gaussian and nonparametric filters, and algorithms for mobile robot localization. The second part introduces fundamental deterministic and randomized algorithms for motion planning.
Offered as CSDS 499 and ECSE 499.
CSDS 500: CSDS Colloquium (100/4974)
TR 11:30-12:30 PM Jan 17-May 01
Ayday, E
Seminars on current topics in Computer and Data Science.
CSDS 500T: Graduate Teaching II (100/4978)
Liberatore, V
This course will provide the Ph.D. candidate with experience in teaching undergraduate or graduate students. The experience is expected to involve direct student contact but will be based upon the specific departmental needs and teaching obligations. This teaching experience will be conducted under the supervision of the faculty member who is responsible for the course, but the academic advisor will assess the educational plan to ensure that it provides an educational experience for the student. Students in this course may be expected to perform one or more of the following teaching related activities: grading homeworks, quizzes, and exams, having office hours for students, running recitation sessions, providing laboratory assistance. Recommended preparation: Ph.D. student in CSDS department.
CSDS 600: Contemporary Issues in Big Data (777/5551)
MW 03:20-04:35 PM Jan 17-May 01, W 02:15-03:05 PM Jan 17-May 01
Chaudhary, V
CSDS 600: Intro to Connected Devices (104/12758)
MW 04:50-06:05 PM Jan 17-May 01
Barendt, N
CSDS 600T: Graduate Teaching III (100/4982)
Liberatore, V
This course will provide Ph.D. candidate with experience in teaching undergraduate or graduate students. The experience is expected to involve direct student contact but will be based upon the specific departmental needs and teaching obligations. This teaching experience will be conducted under the supervision of the faculty member who is responsible for the course, but the academic advisor will assess the educational plan to ensure that it provides an educational experience for the student. Students in this course may be expected to perform one or more of the following teaching related activities running recitation sessions, providing laboratory assistance, developing teaching or lecture materials presenting lectures. Recommended preparation: Ph.D. student in CSES department.