Skip to Main Content

Course Listing

All courses, arranged by program, are listed in the catalog. If you cannot locate a specific course, try the Advanced Search. Current class schedules, with posted days and times, can be found on the NOW/Student Dashboard or by logging in to SiS.


Media Computing (Formerly 91.100)

Description

An introductory course to computer programming using multimedia applications such as images, video and audio. Linear data structures representing multimedia data are manipulated with loops and conditionals in the Python language.

An Introduction to Programming for Data Science

Description

Linguists, chemists, business analysts, social scientists, and essentially everyone needs computational approaches to structure, analyze and present their data. However, non-experts are often intimidated to start programming and may struggle to see the numerous possibilities it may open up for their field of study. Using the poplar and easy-to-learn Python language, this course offers a practical introduction to basics of programming and how it can be used to analyze, structure, and visualize data. Students will also gain hands-on experience with a number of popular libraries useful for data preparation and analysis.

Computing I (Formerly 91.101)

Description

Introduction to computing environments: introduction to an integrated development environment; C, C++, or a similar language. Linear data structures; arrays, records, and linked lists. Abstract data types, stacks, and queues. Simple sorting via exchange, selection, and insertion, basic file I/O. Programming style documentation and testing. Ethical and social issues. Effective Fall 2013, Co-req 91.103 Computing 1 Lab.

Prerequisites

Co-req: COMP.1030L Comp. 1 Lab.

Computing II (Formerly 91.102)

Description

Computing II focuses on the implementation and applications of data structures, including arrays, linked lists, stacks, queues, trees, binary trees, binary search trees, heaps, graphs, and hash tables. Recursive approaches are used. Performance analysis is discussed. Attention is paid to programming style, documentation, and testing. This course includes extensive laboratory work. Effective Fall 2013, Co-req: Computing 2 Lab.

Prerequisites

Pre-req: COMP.1010 Computing I with a B- or better, and COMP.1030L Computing I Lab, and Co-req: COMP.1040L Computing II Lab.

Computing I Lab (Formerly 91.103)

Description

This is the lab class for COMP.1010 Computing I. This class must be taken with COMP.1010 Computing I in the same semester.

Computing II Lab (Formerly 91.104)

Description

This is a lab class for 91.102 Computing II. This class must be taken with 91.102 Computing II in the same semester.

Prerequisites

Co-req: Computing II COMP.1020.

Intro to App Des & Mobile Comp (Formerly 91.108)

Description

This course is an introduction to design principles of applications ("apps") that run on mobile devices (smart phones and tablet computers). The course focuses on software interaction design and computational thinking. Students will gain theoretical knowledge and design skills in these domains by building a series of apps that run on the Android platform using MIT App. Inventor software. The course will also include discussion of societal impacts of computing.

First Year Seminar for Computer Science Students

Description

This course is designed to acclimate incoming students to their new University environment. Students will learn about the Computer Science field, the program at the University, its faculty, and other resources useful for success.

Undeclared Science Seminar (Formerly 91.112)

Description

Discussions will be conducted on a wide range of topics in the sciences to familiarize the student with the programs, procedures, research, and educational opportunities at the University.

Exploring the Internet (Formerly 91.113)

Description

An introduction to internet technologies and how they intersect with social, political, and economic issues. Includes: the history of the internet, how it's presently managed, how information is transferred between servers and clients, collaborative web technologies, search engines, encryption, digital rights management, certificate authorities, phishing and other malware, and privacy concerns. Students will build a basic website using HTML and CSS.

Prerequisites

Not for Academic Plan Computer Science (BS).

Computing III (Formerly 91.201)

Description

This course presents an introduction to object-oriented software development using the C++ programming language. The main ideas are encapsulation, class hierarchy and inheritance, polymorphism, copy control, operator overloading, dynamic memory management, and templates. Additional topics include the Standard Template Library (containers and iterators), class design diagrams, and exception handling.

Prerequisites

Pre-req: COMP.1020 Computing ll, and Co-req: COMP.2010L Computing lll Lab.

Computing III Lab

Description

This is the lab class for COMP.2010 Computing lll. This class must be taken with COMP.2010 Computing lll in the same semester.

Prerequisites

Pre-req: COMP.1020 Computing ll, and Co-req: COMP.2010 Computing lll.

Assembly Language Programming (Formerly 91.203)

Description

Presents the organization and operation of a conventional computer, including principal instruction types, data representation, addressing modes, program control, I/O, assembly language programming, including instruction mnemonics, symbolic addresses, assembler directives, system calls, and macros, the usage of text editors, symbolic debuggers, and loaders, and the use of pseudocode in guiding structured assembly language programming.

Prerequisites

Pre-req: COMP.1020 Computing ll, and Co-req: COMP.2030L Assembly Language Lab.

Assembly Language Programming Lab

Description

This is the lab class for COMP.2030 Computer Organization and Assembly Language. This class must be taken with COMP.2030 in the same semester.

Prerequisites

Pre-req: COMP.1020 Computing ll, and Co-req: COMP.2030 Computer Organization and Assembly Language.

Computing IV (Formerly 91.204)

Description

Advanced C++ programming, which deepens students' understanding of object-oriented analysis and design. Basic software engineering principles and practice, including work with APIs. Topics may include program translation, web software, parsing, and regular expressions.

Prerequisites

Pre-Req: COMP.2010 Computing III.

Computer Science for SRT Applications (Formerly 91.211)

Description

This course is an introduction to C programming, with applications in sound recording technology. Students will write and execute several programs that perform operations pertinent to SRT, including manipulating MIDI codes, performing simple signal processing functions, processing sampled data, and synthesizing sound algorithmically. Not for computer science majors.

Prerequisites

Music majors only.

Special Topics: Sound Thinking (Formerly 91.212)

Description

Special Topics: Sound Thinking is an interdisciplinary elective for students at the sophomore level and above that explores the intersection of computing and music. The course explores the properties of sound, musical form, non-traditional notation, music programming, the computer as a musical instrument, and live performance. It is co-taught by Music and Computer Science faculty.

Introduction to Computer Security (Formerly COMP.3611)

Description

This course introduces students to introductory concepts in cybersecurity. The course will cover generic topics such as introduction to networks, security vulnerabilities in networking protocols, the confidentiality, integrity and availability (CIA) triad, basic cryptography concepts, key management, cryptographic protocols and practical applications of cryptography. For topics in computer security, this course will cover an overview of operation systems security (particularly Linux), password security, access control mechanisms, patching, vulnerability analysis, intrusion detection, auditing, system hardening, virtualization, and security policies. For topics in Network Security, this course will cover major threats affecting networks such as Denial of Service (DoS), brute-force, malicious packets, etc. There will be a high-level overview on network specific attacks such as replay, reflection and MitM and how modern authentication and communication protocols like SSH and TLS prevent them. For topics in application security, this course will overview major threats affection application such as Buffer Overflows, Race Conditions, XSS, Injection attacks, etc. and techniques to prevent them.

Prerequisites

Pre-Req: COMP.1020 Computing II.

Cyber Crime Investigation (Formerly COMP.4611)

Description

This class introduces students to computer forensics and network forensics, which are two major components of digital forensics. The class covers topics including legal compliance, applicable laws, affidavits, root cause analysis, case law, chain of custody, digital Investigations, authentication of evidence, metadata, using virtual machines for analysis, how to testify, E-Discovery, HIPAA/FERPA, computer security act, Sarbanes - Oxley Act, Gramm - Leach - Bliley Act, Children's Online Privacy Protection Act (COPPA), payment card industry data security standard (PCI D55), state, US and international standards/Jurisdictions, laws and authorities, US Patriot Act, problem solving, log-file analysis, interlacing of device and network forensics, etc.

Prerequisites

Pre-req: COMP.2300 Intro to Computer Security.

Organization of Programming Languages (Formerly 91.301)

Description

Analytical approach to the study of programming languages. Description of the salient features of the imperative, functional, logical, and object-oriented programming paradigms in a suitable metalanguage such as Scheme. Topics include iteration, recursion, higher-order functions, types, inheritance, unification, message passing, orders of evaluation, and scope rules. Elementary syntactic and semantic descriptions. Implementation of simple interpreters.

Prerequisites

Pre-Req: COMP.2010 Computing III.

Foundations of Computer Science (Formerly 91.304)

Description

A survey of the mathematical foundations of Computer Science. Finite automata and regular languages. Stack Acceptors and Context-Free Languages. Turing Machines, recursive and recursively enumerable sets. Decidability. Complexity. This course involves no computer programming.

Prerequisites

Pre-Req: COMP 1020 Computing II, and MATH 3220 Discrete Structures II.

Computer Architecture (Formerly 91.305)

Description

Examines the basic functional components of a computer system including the CPU, memory systems, and I/O systems. Each of these three areas will be developed in detail with a focus on the system design and component integration. Topics will include CPU control and ALU operation, computer timing, data address and I/O bus activity, addressing model, programmed and DMA I/O, and instruction sets and micro code.

Prerequisites

Pre-Req: EECE 2650 Intro to Logic Design, COMP 1020 Computing II, COMP 2030 Comp Org & Assembly Lang or EECE 3170 Microprocessor Syst Des I.

Operating Systems (Formerly 91.308)

Description

Presents an introduction to major operating systems and their components. Topics include processes, concurrency and synchronization, deadlock, processor allocation, memory management, I/O devices and file management, and distributed processing. Techniques in operating system design, implementation, and evaluation will be examined.

Prerequisites

Pre-Req: COMP.3050 Computer Architecture.

Introduction to Linux Kernel Development

Description

Linux is the most widely used operating system in the world. The core software component of the Linux operating system is the kernel. Some of its roles include managing hardware interactions, virtualizing system resources, and enforcing security constraints. In effect, the Linux kernel powers almost all of the world's top supercomputers, android phones, and an innumerable variety of other computers. This course will introduce students to the Linux kernel development by focusing on device driver development, particularly character devices and the / proc and /sys interfaces. This will give students hands-on experience working with internal Linux kernel APIs for hardware access, memory management, DMA, and interrupts, among other, and provide an overview of some of the core features and components of the kernel, such as scheduling, system calls, the boot process, and hardware description trees. Gaining an understanding of the inner workings of the operating system and how to make changes to it will give students an invaluable perspective on how computers work behind the scenes, which will reveal a new layer of understanding to apply to any future software engineering practice.

Prerequisites

Pre-req: COMP.2030 Assembly Language Programming.

Database I (Formerly 91.309)

Description

The Database I and II course pair provides students with a comprehensive introduction to data modeling, design of databases, use of database management systems for applications, and exploration into the building of databases. Database I covers relational data models, relational algebra and SQL -- The standard language for creating, querying, and modifying relational databases.

Prerequisites

Pre-Req: COMP.2040 Computing IV.

Database II (Formerly 91.310)

Description

Advanced topics in database systems. The database I and II course pair provides students with a comprehensive introduction to data modeling, design of databases, use of database management systems for applications, and exploration into the building of databases. Database II focuses on database design with Entity-Relationship (E-R) models. Students design and implement a web-based database using MySQL and PHP.

Prerequisites

Pre-Req: 91.309 Database I.

Introduction to Malware Analysis

Description

This course covers a variety of topics on malware analysis, including basic and advanced static analysis and dynamic analysis, virtual machines, assembly language, reverse engineering tools, anti-reverse engineering techniques, and shell code analysis. Students will be able to apply the techniques to detect malware behaviors in binaries and systems.

Prerequisites

Pre-req: COMP.2300 Intro to Computer Security.

Cyber Defense

Description

The course objectives are to -(1) train students on designing, implementing, and evaluating operating systems, enterprise networks, protocols, and services that are secure from modern threats and attacks and (2) train students on performing security and vulnerability analysis of the aforementioned technologies. The focus will be on highly used protocols such as Secure Shell (SSH), Remote Desktop Protocol (RDP), Active Directory (AD), Domain Name System (DNS), Transport Layer Security (TLS), Virtual Private Network (VPN), OpenID Connect (OID), OAuth, and services such as email servers and web servers. The overarching goal is to understand the underlying principles behind the technologies, what makes these technologies inherently insecure and the steps to make them more resilient to attacks.

Prerequisites

Pre-req: COMP.2300 Intro to Computer Security.

Special Topics (Formerly 91.350)

Description

Topics of mutual interest to the instructor and student(s). (Formerly 91.350).

Prerequisites

Pre-req: COMP.3050 Computer Architecture, or permission of instructor.

Software Project I (Formerly 91.401)

Description

Specification, design, and implementation of a one- or two-semester software project proposed to a directing faculty member. Projects may be proposed as a one- or two-semester effort based on faculty approval. A two-semester effort requires subsequent registration for COMP.4020 Prerequisite: Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to department chairperson

Prerequisites

Academic Plan or minor Computer Science (BS) and Level Sophomore Standing.

Software Project II (Formerly 91.402)

Description

A continuation of COMP.4010. Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to the department chairperson.

Prerequisites

Pre-Req: 91.401 Software Project I.

Analysis of Algorithms (Formerly 91.404)

Description

Development of more sophisticated ideas in data type and structure, with an introduction to the connection between data structures and the algorithms they support. Data abstraction. Controlled access structures. Trees, lists, stacks, queues, graphs, arrays, hash tables. Algorithm design strategies such as divide and conquer. Elementary techniques for analysis; asymptotic analysis, recursion equations, estimation methods, elementary combinatorial arguments. Examination of problem areas such as searching and sorting, and the indicated representations and algorithms. The student will use the techniques learned in this course and in previous courses to solve a number of logically complex programming problems using pseudocode, with an emphasis on establishing algorithmic correctness and estimating time and space complexity.

Prerequisites

Pre-Reqs: COMP 1020 Computing II, MATH 3220 Discrete Structures ll and MATH 3860 Probability & Statistics I.

Compiler Construction I (Formerly 91.406)

Description

Includes both theory and practice. A study of grammars; specification and classes; the translation pipeline: lexical analysis, parsing, semantic analysis, code generation and optimization; and syntax-directed translation. Use of automatic generation tools in the actual production of a complete compiler for some language.

Prerequisites

Pre-req: COMP.3010 Organization of Programming Languages.

Software Engineering I (Formerly 91.411)

Description

Software Engineering is an essential discipline for any computer science major. In this class you will learn skills that will help you design and build software projects for advanced computer science classes This course provides an introduction to systematic techniques for development of software, i.e. , "the Engineering of Software". Topics to be discussed include software life-cycle, group coordination, requirements specification, software design, software testing and software maintenance. Emphasis is given to the development of one complex software system and the system documentation necessary for such a complete software product The students will mock the software cycle via a medium-to-large semester-long project.

Prerequisites

Pre-Req: COMP.2040 Computing IV.

Software Engineering II (Formerly 91.412)

Description

Software development methodologies for large-scale systems. Project organization, life cycle concept, data modeling, structured analysis and design, information hiding, and the use of computer-aided software engineering (CASE) tools. Team projects are required; these emphasize the design, documentation, and maintenance of complex software systems. Not open to students who have taken 91.523 Software Engineering I.

Prerequisites

Pre-Req: 91.411 Software Engineering I.

Data Communications I (Formerly 91.413)

Description

This course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics include: TCP/IP and OSI layered network architectures and associated protocols, application layer, network programming API (sockets), transport, congestion, flow control, routing, addressing, autonomous systems, multicast and link layer. Examples will be drawn primarily from the Internet.

Prerequisites

Pre-req: COMP.2030 Assembly Language Programming, or Permission of Instructor.

Data Communications II (Formerly 91.414)

Description

A continuation of 91.413. Topics include Multimedia Networks, network Management, Network Security, Wireless and Mobile Networks. Students will track discussion in IETF committees and work in a dedicated network laboratory. Meets Core Curriculum Essential Learning Outcome for Applied & Integrative Learning (AIL) and Information Literacy (IL).

Prerequisites

Pre-Req: 91.413 Data Communications I.

Internet of Things

Description

The course focuses on fundamental concepts and the state-of-the-art of the Internet of Things (IoT), IoT software, sensor signal processing, IoT networking systems, building IoT products using arduino, NodeMCU, IoT platforms and sensors, designing IoT solutions and mobile computing. Students will learn about the advantages of IoT, fog computing, the use of AI and blockchain technologies in IoT. Real-world applications and cases, such as smart homes, smart cars, and smart cities will be discussed and the future of IoT will be examined. At the end of this source, students will (1) obtain a solid understanding of IoT, fog computing, edge computing, the use of AI-blockchain technologies in IoT, (2) be able to apply data science in real-world applications and cases, such as smart homes, smart cars, smart cities, and healthcare.

Prerequisites

Pre-req: COMP.4220 Machine Learning.

Artificial Intelligence (Formerly 91.420)

Description

Topics include: search techniques and their properties, including A*; game-playing, including adversarial and stochastic search; probabilistic reasoning, including Markov Decision Processes and Hidden Markov Models; and reinforcement learning, including value iteration and q-learning. Topics are developed theoretically and with programming assignments. The course includes a student-directed final project and paper.

Prerequisites

Co-req: COMP 3010 Organization of Programming Languages and MATH 3860 Probability and Statistics I.

Data Mining (Formerly 91.421)

Description

This introductory data mining course will give an overview of the models and algorithms used in data mining, including association rules, classification, and clustering. The course will teach the theory of these algorithms and students will learn how and why the algorithms work through computer labs.

Prerequisites

Pre-Req: COMP 4200 Artificial Intelligence or COMP 3100 Database II.

Machine Learning (Formerly 91.422)

Description

This introductory course gives an overview of machine learning techniques used in data mining and pattern recognition applications. Topics include: foundations of machine learning, including statistical and structural methods; feature discovery and selection; parametric and non-parametric classification; supervised and unsupervised learning; use of contextual evidence; clustering, recognition with strings; small sample-size problems and applications to large datasets.

Prerequisites

Pre-Reqs: COMP 1020 Computing II, MATH 3220 Discrete Structures ll and MATH 3860 Probability & Statistics I.

Computer Vision I (Formerly 91.423 & 91.523)

Description

Computer vision has seen remarkable progress in the last decade, fueled by the ready availability of large online image collections, rapid growth of computational power, and advances in representations and algorithms. Applications range from 3-D scene reconstruction, to visual Simultaneous Localization and Mapping (SLAM) for robotics, to real-time human body pose estimation. This introductory computer vision course explores various fundamental topics in the area, including the principles of image formation, local feature analysis, segmentation, multi-view geometry, image warping and stitching, structure from motion, and object recognition.

Prerequisites

Pre-req: COMP 1020 Computing II, MATH 1320 Calculus II, and MATH 3220 Discrete Structures II.

Introduction to Reinforcement Learning

Description

This course provides a solid introduction to the field of Reinforcement Learning (RL) and Decision Making. The students will learn about the basic blocks, main approached, and core challenges of Reinforcement Learning including tabular methods, Finite Markov Decision Processes, Dynamic Programming, Monte Carlo Methods, Temporal-Difference learning, policy search, function approximation, exploration, and generalization. Through a combination of lectures, and written and coding assignments, students will become well versed in key ideas and techniques for RL. Assignments will include the basics of reinforcement learning. In addition, students will advance their understanding and the field of RL through a final project.

Prerequisites

Pre-req: COMP.2010 Computing III, and MATH.3860 Probability and Statistics I, or Permission of Instructor.(Students seeking this permission are expected to have knowledge of calculus, linear algebra, and Python).

Computer Graphics I (Formerly 91.427)

Description

Introduction to graphics systems and concepts. History of graphics. Introduction to hardware, software, and mathematical tools. Graphics languages and APIs (OpenGL and other traditional and web-based libraries). Graphics data structures and algorithms for 2D and 3D modeling and viewing. Input, archiving, and display architectures.

Prerequisites

Pre-Req: COMP.2010 Computing III.

Computer Graphics II (Formerly 91.428)

Description

An advanced course in computer graphics for students familiar with basic issues in computer graphics. Details on hidden line and surface removal. 2D and 3D curve and surface generation, rendering, illumination, and color models, realism through precision (ray tracing) and imprecision (fractals), modern hardware architectures, and animation and simulation systems.

Prerequisites

Pre-Req: 91.427 Computer Graphics I.

Bioinformatics for CS

Description

Complete genomic sequences of human, other mammals, and numerous other organisms are known for some time. From early on, comparisons or analyses of genomic sequences require aids of computer programming. After brief introductions to molecular biology for Computer Science students, the course will examine computer algorithms used in bioinformatics problems including sequence alignment, phylogeny, DNA sequencing, and data analyses.

Prerequisites

Pre-req: COMP.1020 Computing II, and MATH.3860 Probability and Statistics I.

Social Computing

Description

This course focuses on the background, design, implementation and analysis of social computing systems. The specific focus of the course will be on computational models applied to user-generated content, including online reviews, web forums discussions and other textual content in social media platforms such as Twitter and Reddit. Tools and techniques for crawling, pre-processing and pos-processing user-generated content will be introduced through interactive and hands-on tutorial sessions. In addition, the course will cover prominent applications and research findings in social computing. At the end of this course, students should have a good understanding of the background, design, analysis and implementation of social computing systems; as well as hands-on experience on a range of tasks from crawling and processing user-generated content to extracting actionable insights from such content. Guest lectures by distinguished researchers and course projects will emphasize the subtleties of translating computational models into practical applications in social computing. The course is open to undergraduate students (for their elective course requirement) as well a graduate students.

Prerequisites

Pre-req: COMP.1020 Computing II, and COMP.4220 Machine Learning, or Permission of Instructor.

Natural Language Processing (Formerly 91.442 & 91.542)

Description

This course introduces principles and techniques behind natural language processing (NLP), and covers a large selection of important automatic text processing tasks. Selected topics include n-gram language models, part-of-speech tagging, statistical parsing, word sense disambiguation, discourse segmentation, information extraction, sentiment analysis, machine translation. Quantitative techniques are emphasized, with a focus on applying statistical models to large collections of text. The course provides students with a hands-on experience in building a substantial NLP application of their choice.

Prerequisites

Pre-req: 91.422 Machine Learning.

Mobile Robotics (Formerly 91.450)

Description

This course covers fundamental problems and leading solutions for computer and robot perception and action from the point of view of autonomous robot navigation. Topics are approached primarily from the point of view of autonomous robot navigation -- what and how must a robot perceive the world, and how can it use that information to navigate effectively.

Prerequisites

Pre-req: COMP 1020 Computing II, or Co-req: EECE 3170 Microprocessor System Design I.

Probabilistic Robotics (Formerly 91.451)

Description

This course provides a comprehensive introduction to the field of probabilistic robotics covering fundamental problems and leading solutions for robot perception and control. The methods discussed in this course rely on statistical techniques for representing information and making decisions.

Prerequisites

Pre-req: COMP.1020 Computing II, or EECE.3170 Microprocessor System Design I and Co-req: MATH.3860 Probability and Statistics I.

Robot Design

Description

In this course, we will study the field of robotics from the perspective of designing robot systems, through a series of lectures, readings, and lab-based assignments and projects. Topics include sensors, locomotion, autonomy, control architectures, application domains, and current research. You will design, build and program a robot to complete a series of small challenges in the start of the semester (restricted design constraints). The second part will be focused on the selecting a problem domain, then designing, building, and programming a robot for the final project (less restricted constraints).

Prerequisites

Pre-req: COMP.1020 Computing II, or EECE.3170 Microprocessor System Design I.

Selected Topics (Formerly 91.460)

Description

Depends on faculty interest, student demand, and developments in the field.

Prerequisites

Junior or Senior Status.

Graphical User Interface Programming I (Formerly 91.461)

Description

This is a first course in the design and implementation of graphical user interfaces (GUIs) for web-based environments. The course requires the completion of several client-side programming projects that are evaluated on design and layout of the user interface, coding style, and comprehensiveness of documentation. Students learn to create web pages using HTML, CSS, JavaScript, jQuery, and a variety of jQuery plugins. Server-side techniques using PHP and MySQL are explored if time permits. The course may be taken on its own, but is intended to be followed by 91.462 to complete a two-course CS project sequence.

Prerequisites

Pre-Req: COMP.2010 Computing III.

Graphical User Interface Programming II (Formerly 91.462)

Description

A second course in the design and implementation of graphical user interfaces for web-based environments. The course requires the completion of a semester-long project done with others as a team. It explores the writing of a project proposal, the development and presentation of alpha and beta versions, usability testing, and a final presentation to an external audience.

Prerequisites

Pre-Req: COMP.4610 GUI Program I with C or better, or Spring 2020 grade of "P".

Mobile App Programming l

Description

This is a first course in the design and implementation of mobile applications. The course requires the completion of several Android programming projects that are evaluated on the functional correctness, coding style, and documentation. Students learn the fundamental principles of Android components, application architectures, and common Android libraries to create non-trivial mobile applications. The course may be taken on its own, but is intended to be followed by Mobile App Programming ll to complete a two-course CS project sequence.

Prerequisites

Pre-req: COMP.2040 Computing lV.

Mobile App Programming ll

Description

A second course in the design and implementation of mobile applications on Android platform. The course requires the completion of a semester-long project done with others as a team. It explores the writing of a project proposal, the development and presentation of alpha and beta versions, usability testing, and a final presentation to an external audience.

Prerequisites

Pre-req: COMP.4630 Mobile App Programming l.

Introduction to IoT Security and Privacy

Description

The Internet of Things (IoT) has broad application domains including healthcare, smart home, retail, manufacturing, agriculture, environmental monitoring and industrial automation. This course introduces different aspect of IoT security and privacy on hardware, software, network, and data. The key objectives include: understanding IoT frameworks, applications and security and privacy concerns; being familiar with IoT hardware security; understanding IoT system security; mastering IoT network security; understanding the IoT data security and privacy.

Prerequisites

Pre-req: COMP.2300 Intro to Computer Security.

Methods in Data Science

Description

Data science is concerned about data: methods for creating, storing, retrieving, analyzing, interpreting, and visualizing data. Data science continues to evolve as one of the most promising and in-demand career paths. This course will introduce emerging methods in data science. After taking this course, students will obtain a clear concept about what is stat of the art methods for data and knowledge of a wide range of resources and tools to use and analyze data. Design of the Course: The course will include two main parts: Regular lectures, which will consist of core topics in data science such as machine learning, visualization, information retrieval, and ontology and databases. Invited seminars consist of invited professionals who work on cutting-edge research in data science. Reading assignments will be given to students at each lecture or seminar. Quiz will be assigned at the end of each lecture topic.

Prerequisites

Pre-req: COMP.2040 Computing IV, or COMP.3040 Foundations of Comp Science.

Honors Project I (Formerly 91.480)

Description

This course provides an undergraduate research experience for Computer Science majors enrolled in the Honors Program. Each student develops a project idea in consultation with the instructor. The student writes a proposal for the project, reads the relevant literature, performs the project, writes a project report or thesis, and makes an oral presentation about the project.

Prerequisites

Junior or Senior standing.

Honors Project II (Formerly 91.481)

Description

In this course, students continue and complete the project started in 91.480 Honors Project I.

Prerequisites

Pre-Req or Co-Req: 91.480 Honors Project I.

Directed Studies in Computer Science (Formerly 91.490)

Description

Individual study for a student desiring more advanced or more specialized work. This course may not be taken more than twice and may not be substituted for scheduled offerings. Prerequisite: Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to the department chairperson. "Variable credit course, student chooses appropriate amount of credits when registering."

Cooperative Education in Computer Science (Formerly 91.493)

Description

Supervision of cooperative educational experiences in Computer Science.

Organization of Programming Languages (Formerly 94.301)

Description

Analytical approach to the study of programming languages. Description of the salient features of the imperative, functional, logical, and object-oriented programming paradigms in a suitable metalanguage such as Scheme. Topics include iteration, recursion, higher-order functions, types, inheritance, unification, message passing, orders of evaluation, and scope rules. Elementary syntactic and semantic descriptions. Implementation of simple interpreters. Note: This course is for CS graduate students needing to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

Foundations of Computer Science (Formerly 94.304)

Description

A survey of the mathematical foundations of Computer Science. Finite automata and regular languages. Stack Acceptors and Context-Free Languages. Turing Machines, recursive and recursively enumerable sets. Decidability. Complexity. This course involves no computer programming. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

Computer Architecture (Formerly 94.305)

Description

Examines the basic functional components of a computer system including the CPU, memory systems, and I/O systems. Each of these three areas will be developed in detail with a focus on the system design and component integration. Topics will include CPU control and ALU operation, computer timing, data address and I/O bus activity, addressing model, programmed and DMA I/O, and instruction sets and micro code. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

Introduction to Operating Systems (Formerly 94.308)

Description

Presents an introduction to major operating systems and their components. Topics include processes, concurrency and synchronization, deadlock, processor allocation, memory management, I/O devices and file management, and distributed processing. Techniques in operating system design, implementation, and evaluation will be examined. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

Analysis of Algorithms (Formerly 94.404)

Description

Development of more sophisticated ideas in data type and structure, with an introduction to the connection between data structures and the algorithms they support. Data abstraction. Controlled access structures. Trees, lists, graphs, arrays; algorithms design strategies; backtracking, greedy storage, divide and conquer, branch and bound. Elementary techniques for analysis; recursion equations, estimations methods, elementary combinatorial arguments. Examination of problem areas such as searching, sorting, shortest path, matrix and polynomial operations, and the indicated representations and algorithms. The student will use the techniques learned in this course and in previous courses to solve a number of logically complex programming problems. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.