Computer Science (CS)
Topics of current interest in computer science and computer applications.
Introduction to Java programming and computer science concepts. Java environment setting up. Variables, basic built-in data types and arrays. Expressions. Assignment, conditional and iterative statements. Computation abstraction and reuse with methods and objects. Parameter passing. String processing. Exception handling. Text file I/O. Built –in data structures vector, stack, queue, Hash table and their application. Programming problem-solving is emphasized throughout.
Java packages. Abstract classes and interfaces. Class inheritance and polymorphism. Class design and implementation. Object modeling with UML. Event-driven programming and basic GUI design. Multi-threading and thread synchronization. Problem-solving through course projects.
This course covers the fundamental concepts and methods of Object-Oriented problemsolving using Java as the programming language. The main topics include data modeling with primitive data types, single/multi-dimensional arrays, classes and packages; computation algorithm specification with expressions, assignments, conditional & loop statements, and methods; formatted data I/O on the console and through files; software reuse with class inheritance, interfaces and polymorphism; problem-solving with Java collection framework data types stack, queue, Vector and Ηashtable; basic sorting and searching algorithms; and basic graphic user interface programming based on event-driven programming.
This course provides an integrated survey of fundamental ideas in the areas of computer architecture; operating systems; and programming language specification and translation.
An intensive introduction to mathematical techniques related to computer science for students with limited background in college mathematics. Topics include different number systems, sets, logic, Boolean algebra, combinatorics and elementary probability, relations and functions, matrix algebra, algebraic structures, and graph theory.
This course provides an introduction to the use of microcomputers, including programming, file structure and manipulation, graphics, and interfacing. Various microprocessor organizations will be compared. Students will learn an assembly language and will be required to write several programs.
The C programming language will be studied including control structures, I/O, subroutines and static and dynamic allocation of storage.
An introduction to the UNIX Operating System including the UNIX shell, editors, file systems, tools, and utilities.
The goal of this course is to help educators use applications software to teach topics in the K-12 curriculum. In a growing number of elementary and secondary classrooms, students are writing with a word processor, using databases in social studies and science, publishing a student newspaper with desktop-publishing software, and using telecommunications to find references for their research papers. This course is designed to acquaint teachers with the many ways to use the microcomputer in the classroom.
Independent study projects in special areas of computer science can be pursued by advanced students with a minimum QPA of 3.70 who, upon the submission of a detailed proposal, obtain permission of the instructor. No more than 6 credits of Independent Study may be taken.
Data structures and algorithms presented as a basis of problem analysis and program design. Topics include lists, trees, B-trees, heaps, sort, search and network algorithms. Analysis of the computational complexity of algorithms. These topics are illustrated with a variety of applications and programming assignments.
Data structures and algorithms presented as a basis of problem analysis and program design. Topics include lists, trees, B-trees, heaps, sort, search, and network algorithms. Analysis of the computational complexity of algorithms. These topics are illustrated with a variety of applications and programming assignments.
This course provides a broad overview of statistical methods and the R language in the context of computing. The course teaches students R and prepares them to solve problems encountered in research projects, to make decisions based on data in general real world settings, to present results, and to become critical readers of statistical analyses in research papers. Topics include sampling methods, probability, statistical inference, linear models, algorithms for big data analysis and machine learning. The course presumes that the students have a minimal mathematical background (algebra) and no prior course work in statistics. Computational analysis is the emphasis over theoretical aspects. Students will use the R language for assignments and projects.
Digital computer organization and architecture. Topics include comparative computer structures, organizations and machine languages, logic circuits, multiprogramming and multiprocessing, assembly language, stack machines, input/output programming, software/hardware tradeoffs, computer networks and microprogramming and microprocessors. The effects of architecture and organization on the reliability, portability and efficiency of software will be considered.
This course provides an integrated survey of fundamental ideas in the areas of computer architecture; operating systems; and programming language specification and translation. The focus of this course is on the computer organization of a computer system, including the processor architecture and the memory system. In particular, we will discuss the internal representation of information, instruction set architectures and implementation techniques for computer arithmetic, control path design, and pipelining. We examine the hardware and software components required to go from a program expressed in a high-level programming language like C to the computer actually running the program. This course takes a bottom-up approach to discovering how a computer works, and introduces basic concepts of operating systems, compilers and interpreters.
Implementation of high-level programming languages. Topics to be covered include concepts and comparison of programming languages, lexical analysis, parsing, code generation and optimization. Emphasis will be placed on the formation structures and algorithms required to implement compilers and their use and performance in other applications. Students will be expected to implement a compiler.
Building linked data structures including lists and trees. Recursive techniques for managing binary trees and for backtracking. Derivation including abstract classes, and polymorphism. Interfaces. Exception handling. Information storage and retrieval systems and time complexity analysis. Applicable design patterns. Coverage of Java collections framework.
An introduction to the basic probability models, queuing theory, and simulation techniques used in the performance analysis and planning of computer networks and Internet systems. Topics include event probability , standard discrete and continuous probability distributions, the Poisson process, random number generation, discrete-event system modeling and simulation techniques, statistical estimation, and basic queuing models. The topics are illustrated with applications to current Internet-related systems.
Applications of abstraction and divide-and-conquer in computer science (hardware, software, theory); essentials algorithms including searching, sorting, hashing and graphs; popular algorithms such as string machine, Map Reduce and RSA and their applications; complexity; computability; NP-hard problems, NP-complete problems, and undecided problems; finite state automata vs. regular expressions.
s: Algorithms and information structures of operating systems and their performance in various environments. Topics to be covered include concurrent and sequential processes, process communication, scheduling, mutual exclusion and deadlock, memory management, file management and the social, as well as technical issues, of security and protection. Students will be expected to implement some component of an operating system.
Parallel computing theory: Parallel Random-Access Machines (PRAMs), Amdahl’s law for theoretical speedup limits, Petri Nets; parallel vs. distributed computing: speedup, fault-tolerance, resource-sharing; parallel architectures; data flow, instruction-level pipelining, embedded multicore systems, shared-memory multiprocessors, distributed-memory multicomputers, interconnection networks, distributed systems: client-server systems, cluster computing, computing grids, cloud computing; parallel and distributed programming with industry standard MPI (Message Passing Interface); and parallel algorithms.
Concept underlying the design of traditional and modern programming languages; language paradigms (imperative, object-oriented, functional, and logic); cross-language interoperability on the .NET and JVM platforms; semantics (operational and denotational); type systems (polymorphism, inference, and abstract types); garbage collection; multiprocessing; formal syntax of programming languages using BNF and EBNF grammars, scanning. Parsing and the compilation process; use of Lex and Yacc for the functions of scanning and parsing. The course involves substantial programming assignments in different programming languages (C, ML, Prolog, Scala, F# as representatives) and a significant amount of reading.
Integrated hands-on coverage of fundamental concepts and technologies for enterprise and Internet computing. Topics include data storage; XML data specification, parsing and validation; data and language translation; networking and Web technology overview; software framework technology for controlling software system complexity; and a roadmap for the enterprise computing technologies.
Implementation of high-level programming languages. Topics to be covered included concepts and comparison of programming languages, lexical analysis, parsing, code generation and optimization. Emphasis will be placed on the formation structures and algorithms required to implement compilers and their use and performance in other applications. Students will be expected to implement a compiler.
A survey of the logical foundations of mathematics, the mechanization of the reasoning, and relationships to computer science. Propositional logic and first order logic; decision procedures for equality; notions of proofs and models; model checking and theorem proving based techniques; completeness theorem; Hoare logic and application of logic to formal software verification, i.e., the use of logic to specify properties of prove some small programs, the implementation of a small theorem prover in a functional programming language, and a significant amount of reading of recent research results.
This seminar will examine the methodologies used in design, documentation, verification, implementation, validation, performance, evaluation and maintenance for the development of large software systems. Methodologies included are structured programming and walk-thrus, top-down modular design, proof of correctness and automated testing techniques. Seminar participants will design and implement large modular software systems using techniques chosen or evolved from those presented.
Students will create real time applications, especially 2D and 3D computer games. The idea is to translate a game design into a workable script language. The course will focus on 3D level design, motion capture and camera angles, character development, rendering and animation in 3D, polygon models, collision detection, and texturing.
Overview of fundamentals of complex systems science. Concepts covered include reductionism, emergence, self-organization, and evolution. Topics covered include competition/cooperation, complexity/scale, relationship/component-centric analyses, and bottom-up/top-down control. Examples will be drawn from disciplines such as neuroscience, healthcare, education, information theory and cybernetics.
This course will provide an overview of topics such as introduction to data mining and knowledge discovery; data mining with structured and unstructured data; foundations of pattern clustering; clustering paradigms; clustering for data mining; data mining using neural networks and genetic algorithms; fast discovery of association rules; applications of data mining to pattern classification; and feature selection. The goal of this course is to introduce students to current machine learning and related data mining methods. It is intended to provide enough background to allow students to apply machine learning and data mining techniques to learning problems in a variety of application areas.
The World-Wide Web Consortium’s (W3C) eXtensible Markup Language (XML) has rapidly emerged as a standard that is used in a wide variety of applications related to Web and e-commerce. XML is becoming a very important new technology used everywhere in IT industry. We believe that every student must have exposure to this powerful technology. This course not only introduces XML but also deals with how to develop XML applications using JAVA. This course starts with basics of XML and goes on to developing XML applications using a programming language such as JAVA.
In-depth study of specialized topics in high-level language design. Topics include formal language theory, automata, bottom up and top-down parsing techniques, macro processing and optimization. There will be several programming assignments.
Comprehensive treatment of advanced topics in comptuer architectures. Topics include memory and storage heirarchies, stack computers, parallel computers, overlap and pipeline processing, microcoding and interpretation and their structures, utilization of microprocessors in computer structures and computer system performance evaluation.
Database management system installation and configuration, database’s role as a middleware in system hierarchy, Entity Relationship (E-R) model for logical design, schema normalization and performance tradeoffs, database management with SQL through database console, database programming through JDBC, event-processing with triggers, efficient data processing with stored-procedures, transactions management and ACID properties, database security, and crash recovery.
Introduction to .NET Web technologies through C# .NET for people with basic programming skills. Topics include object-oriented programming in C#, exception handling, delegate, multithreading, graphic user interface, Web Programming with ASP.NET, database programming with ADO.NET, Web services, and Microsoft Visual Studio .NET IDE.
Solutions of equation, interpolation, approximation of functions by polynomials, numerical integration and numerical solution of ordinary differential equations. Methods for the solution of matrix equations will be introduced. Algorithms for the computer solution of selected application problems will be designed and implemented.
Theoretical, computational and applied areas of linear and, to some extent, non-linear programming. Formulation of linear programs solution by simplex method, duality problems and importance of Lagrange multipliers will be discussed. Efficient computational techniques, degeneracy procedures, transportation problems and quadratic programming problems and projection methods (active set) to solve non-linear programs will be reviewed.
Theory and data structures and algorithms related to artificial intelligence and heuristic programming. Topics include description of cognitive processes, definition of heuristic vs. algorithmic methods, state space and problem reduction, search methods, theorem proving, natural language processing and pattern recognition techniques.
Concepts and methods of theoretical computer science. Topics to be covered include finite state machines, pushdown automata, Turing machines, the theory of formal languages, and the theory of computability.
Algorithms, data structures and hardware related to computer graphics and image processing. Topics covered are: vector, curve and character generation; interactive display processors, graphical data structures, graphic languages; the mathematics of three dimensions, projections and the hidden-line problems; two-dimensional image processing algorithms, enhancement and coding.
Autonomous software agents are used in many areas, from shopping bots to security bots and personal assistants. This course teaches the basic programming skills necessary to program autonomous agents using a rule-based system. Basic knowledge engineering skills and the design of agent-based programs are covered, including the use of software that learns from its own experiences.
This course will consist of topics of current interest in computer science in the area of the instructor¿s specialty. Recent titles have included Intelligent Agents and Internet Computing with Distributed Components.
Functions of XML and Web services for B2B system integration. XML, HTTP, and SOAP. Integrating B2B services with Web services. Implementation and consumption of Web services on Java platform. Implementation and consumption of Web services on MS .NET platform. Cross-platform system integration. Web services registries. Web service security.
Topics covered include: Parallel vs. distributed computing; multiprocessor and multi-computer architectures; parallel programming languages and algorithms; shared-memory and message-passing programming; distributed architectures; socket-level and software-framework based programming; cluster-based computing; grid computing architecture and tools; and service-oriented grid computing.
The discussion will include the latest components of e-commerce architecture, communications, and data processing as well as analysis of technological methods and tools used. It will offer a framework for the development of new business enterprise models and electronic markets based on modern communications and computational technologies. We will cover technical issues as the Internet, Extranets, Portals and search engines, web intelligence, electronic payment and security, and EC servers.
This course will present the fundamental concepts and techniques of digital image processing and its applications. Digital image processing techniques including enhancement, filtering, morphology, and segmentation will be discussed. The course will also expose students to MATLAB as an image processing tool. MATLAB-based course assignments will be used to illustrate and practice image processing techniques. Students will gain hands-on experiences on how to process and analyze digital images using MATLAB. Students will become familiar with research questions tackled in the computer vision field.
Autonomous software agents are used in many areas, from shopping bots to security bots and personal assistants. This course teaches the basic programming skills necessary to program autonomous agents using a rule-based system. Basic knowledge engineering skills and the design of agent-based programs are covered, including the use of software that learns from its own experiences.
This course introduces students to the basics of mobile phone application development in Java. It provides an overview of the technical skills required to build such applications but also emphasizes entrepreneurial opportunities in the global mobile phone services industry. It covers the development of MIDlets and survey how to design SMS-server side applications. The knowledge of the above topics will be applied in the design and implementation of an innovative mobile phone application as part of a course long team project
Directed readings under the supervision of a faculty member.
This course introduces students to the basics of mobile phone application development. It provides an overview of the technical skills required to build such applications but also emphasizes entrepreneurial opportunities in the global mobile phone services industry. The focus will be on Java ME but other languages and development platforms will be presented. The course will be organized around a series of talks from speakers from the industry and NGOs who will provide insight about their experience in the field.
The use of computing for visualization in science and engineering is critical to the success of most organizations worldwide. Three-dimensional designing in virtual world can greatly enhance the interpretation and comprehension of data. Moreover, it can ultimately lead to more astute decision making and strategic planning. The goal of this course is to introduce students to the representation of complex data using computer-generated three-dimensional modeling, animation and programming applications, which can be applied to a wide-range of fields, including aerospace, automotive, manufacturing and gaming. Course Roation: NYC:Summer
Visual Computing is a course designed to provide an introduction to the use of computers for visual communication. Core areas of visual computing are computer graphics, image processing, human-computer interaction, and visualization. This course will survey the key roles these fields play in information representation and display with an emphasis on the underlying theories and methodologies for construction of computer-based visualizations and imagery.
This interdisciplinary course integrates computing (computer science, information systems, and information technology), finance, and applied entrepreneurship to provide the student analytical, quantitative, application, and entrepreneurial skills needed for sound and strategic financial decision making and information technology based product creation. The course will emphasize creative problem solving of and development innovative algorithms for financial problems in such topics as financial analysis and time value of money, derivative products, portfolio management, hedging strategies, arbitrage, risks, Black-Scholes model, interest rate models, and fixed income analysis. Within a collaborative tram environment, the student will develop innovative algorithmic solutions for financial problems as well as analyze, evaluate model financial time series with neural networks; the algorithms will be implemented in a high-level computer language (e.g. Java, C/C++, or Matlab) into prototypes for potentially marketable financial software products. An entrepreneurial perspective will permeate the course in the form of creative thinking and calculated risk-taking in the design and development of the algorithms and prototypes, and the development of a high-quality business plan for an information technology company to market the likely software products. There will be a reliance on entrepreneurs for team mentors, project selection and scaling, and guest speakers.
Entrepreneurial Health Informatics is an interdisciplinary course that provides an overview of computer based clinical record systems as well as decision support systems for medical application. The course will mainly focus on experiential entrepreneurship through innovation, evolution, and imitation as well as algorithmic solutions for health decision support; data acquisition, processing, and analysis; and delivery systems and services. The main topics covered health information technology systems’ standards and terminologies, risks and uncertainty, data and workflow modeling, data mining, data visualization, and medical decision making. Teamwork and entrepreneurship will be infused throughout the course in the form of creative critical thinking and problem-solving and calculated risk-taking in the design and development of the algorithms supported by a quality business plan for a health related information technology company. Entrepreneurs will be recruited for the roles of team mentors, project selection and scaling, and guest speakers.
An introduction to programming for websites using the Ruby on Rails framework. Students will create projects using the model-view-controller paradigm. The projects will consist of a website that can access a database through a server.
Comprehensive introduction to data mining with particular emphasis on the analysis of unstructured data. Data pre-processing and exploratory analysis, unsupervised and supervised methods, decision trees, clustering and association rules. Applications on textual information with text similarity and text-classification within the life-science industry.
The need for innovation has never been more pronounced than in the current social, political, and economic landscape. The call is out for a new generation of scientists, technologists, and artists to become our great innovators. But the path to innovation is not without law. Legal and policy issues abound, from intellectual property law to privacy and security concerns to our constitutional guarantee of freedom of speech. Understanding the framework that governs our system of innovation is critical to ensuring that our future innovators are in the best position to create and that society is in the best position to benefit from their creations. This survey course will cover a number of topics relevant to students considering a wide variety of careers, including those in silence, engineering, and the arts. Topics include an introduction to the access to knowledge movement, the legal and policy considerations of fair use and remix culture, patents, trademarks, and open source software and licensing. The class will meet once a week for 2 hours.
The course attempts to tie four important aspects together: Knowledge Economy; International Management of Services; Entrepreneurship and Innovation; and 24-Hour Knowledge Factory. The objective of the course is to look at several innovative and entrepreneurial aspects of the emerging Knowledge Economy, with special emphasis on how teams of individuals can work together in a seamless manner across national boundaries to render professional services of diverse types and varying sophistication. Graduate-level requirements include an additional 10-15 mid-term paper.
This course provides a hands-on introduction to Deep Learning. The emphasis is on developing skills students need to solve practical, real-world problems. No prior background in Machine Learning is assumed. Students will begin by learning how to design, implement, and evaluate a pipeline for supervised classification, with a focus on classifying structured data. Next, they will learn about deep neural networks, with a focus on classifying unstructured data - including images and text. Along the way, students will explore the latest applications of Deep Learning, across several domains.
This course introduces concepts in machine learning, building on the theoretical foundations covered in CS 660. The course teaches students the wide variety machine learning and statistical modeling techniques necessary to solve practical data science problems, and covers the ethical issues found in designing and conducting data analysis and research. Students will learn to clean and prepare data, conduct exploratory data analysis, and develop predictive models. Students will work on fundamental modeling concepts including concepts from various supervised and unsupervised learning methods such as linear and nonlinear models, cluster analysis, Bayesian models, and trees. The course also prepares students for more advanced study in data mining, machine learning, and artificial intelligence, and introduces students to R and Python.
This course will explore the latest algorithms for analyzing online social networks, considering both their structure and content. Fundamentals of social graph theory will be covered including distance, search, influence, community discovery, diffusion, and graph dynamics.Fundamentals of text analysis will also be covered with an emphasis on the type of text used in online social networks and common applications. Topics include information extraction, clustering, and topic modeling.
This course will examine topics in the design, implementation, and evaluation of big data management and storage. Topics include the memory hierarchy; ways that data is organized both logically and physically; hardware characteristics and the ways that storage hardware influences storage software design; external-memory data structures and performance models; compression; consistency; recovery; and system measurement/evaluation. Readings will be taken from textbooks, conferences, and recent technical literature. An emphasis will be placed on identifying and evaluating system design trade-offs in large-scale data applications.
This course will expose the student to the basic concepts and strategies in Enterprise Search, which is becoming a critical function within a corporation. This course will present the basic concepts and operations of search with real hands-on experience using one of the most adopted search platforms in the world: Apache Solr. Topics include document manipulation and indexing, metadata extraction, ranking. search querying, and integration. This course will also introduce advanced topics like faceted search, search customization, and ranking in order to provide the students with all the knowledge and tools necessary for a successful implementation of a search platform in an enterprise..
This course gives an introduction to the analysis of textual data. Concepts covered include quantification of textual data, document categorization, and information retrieval and prediction. Topics covered include text parsing, text filtering, constructing term-document matrix, applying singular value decomposition, feature extraction, and clustering and predictive modeling with textual data. The course also addresses the application of these techniques to other types of unstructured data such as medical records and insurance reports.
As the use of telemedicine has grown, it is now time to explore broader opportunities for IT and collaboration best practices to impact the broader healthcare and life sciences ecosystem, towards a broader notion of telehealth. This seminar-style course will include lectures from industry guest speakers and cover new business opportunities, supporting technologies which are required to meet those opportunities, and the changes in organizational and regulatory frameworks which will support implementation of these technologies. Sample aspects of the life sciences ecosystem which will be covered include clinical trials of new prescription drugs, global communication of drug efficacy and quality through regulatory systems, and remote management of the medical device manufacturing process. In each of these areas, we will discuss the prospect of telehealth to include more remote participants in the process and have a better impact in patient lives. The course will also include a final project a developing a product plan for technology to address a key telehealth challenge.
The 21st century is characterized by the huge amount of technology innovations that are transforming our life and work. This course will use lectures and seminars by the major technology innovators to introduce the main themes and methodologies of these innovations, how to integrate these innovations into creating new products or services, and how to facilitate and speed up the innovation process.
This course introduces the students to Big Data, Data Analytics including Data Preparation, Model Building, and Prediction, Clustering, Association, Regression (Linear and Logistics), Classification, Decision Trees, Textual Data Analysis and Data Presentation. The basic concepts will be covered with examples which can be tried on excel, R or SAS. These miniaturized examples of real-world problems are designed in such a way that the student will gain a clear understanding and get the firm foundation of the methods covered in the course. In addition, the course gives an introduction to R and SAS.
Students will discuss current issues in the field of analytics each week. The course will consist of assigned readings, and discussions, including discussions lead by industry leaders, on topics relevant to data analytics and computing.
This course provides a foundation in digital communications and network structures as the basis for current and emerging telecommunications and Internet systems. Topics include data, voice and video signals, information transmission (including wireless and optical media), layered networking architecture and protocols (OSI and TCP/IP), multiplexing and statistically shared media, data-link protocols, and an introduction to network and Internet strategies. Simple models for quantitative analysis of capacity and performance of network applications are introduced. Illustrations are based on current networks and Internet systems - including Internet access, wired and wireless Ethernet LANs, cellular systems, and Web facilities.
This course builds upon CS 633 to examine local area networks, Internetworking via the TCP/IP protocols, and the Internet. The OSI reference model and the TCP/IP protocols form the framework. Topics include: multi-access network strategies; basic traffic and capacity models; LAN standards and the evolution from shared access to switched and wireless Ethernet; LAN internetworking using bridges and routers; routing strategies and congestion in networks; the IP protocol; transport-layer issues and the TCP and UDP protocols; network security, Internet services and applications such as the Domain Name System, FTP, SMTP mail, and the HTTP protocol for the Web.
This course covers the current issues and trends in the rapidly evolving field of telecommunications. Emphasis is placed on technological developments and trends with background in regulatory, organizational and economic factors and their interaction.
This special topic seminar examines the US and international education trends and issues. It covers the best practices in high education program design, management, accreditation, and innovation; and the role of current technologies in supporting more effective MOOC and flipped-classroom. The course prepares international educators to better prepare students in programs articulation with US universities.
This course studies Optical Communications and Networks. The key principles and building blocks of Optical Communications and Networks are studied in detail with the first part of the course focusing on Optical Communications and the second part of the course focusing on Optical Networks. Topics on Optical Communications include: Light Propagation in Optical Fiber, Loss and Bandwidth, Chromatic Dispersion, Nonlinear Effects, Solitons, Couplers, Isolators and Circulators, Multiplexers and Filters, Optical Amplifiers, Transmitters, Switches, Wavelength Converters, Modulation and Demodulation, and Transmission System Engineering. Topics on Optical Networks include: Client Layers of the Optical Layer (SONET/SDH, ATM, Storage-Area Networks), WDM Network Elements, WDM Network Design, Control and Management, Network Survivability, Access Networks (HFC, FTTC, PON), Photonic Packet Switching and Deployment Considerations.
The course examines the fundamental concepts of wireless transmission and the operation of current wireless systems and networks. Coverage of wireless transmission includes: radio, propagation, basic antenna operation, and signal impairments (interference, attenuation, reflection, fading, and multipath waves), providing a foundation for studying various wireless systems. Spread spectrum, cellular, and multiple-access (FDMA, TDMA, CDMA, and SDMA) methods are also covered, along with privacy and security issues in wireless systems. Examples of wireless systems covered include: cellular telephone and data networks, wireless LANs, and satellite systems. Students will collaborate to research current and emerging systems in wireless communications.
Topics include design of network topology, capacity and routing strategies. Traffic analysis and performance-capacity effects are studied using a variety of queuing theory and computer simulation models. Emphasis is on applications involving analysis and design of packet data, voice, and emerging integrated broadband networks.
This course surveys the specificities of the development of native applications for different mobile platforms including phones and tablets. The software engineering of application development including user-centered design, testing and quality assurance will be emphasized. Students will learn how to design and develop applications for the Android platform. The following topics will be covered user interface, events processing, services management, location based facilities, accelerometer and other sensors, networks/web access, and sound and multimedia. The parallel with iPhone development will be presented. The distribution of mobile applications and business models for monetization will be covered. A significant project is integrated in the course.
This course will examine current networking practices being employed in the telecommunications industry. Emphasis will be placed on private corporate networks built from common carrier building blocks. A portion of the course will be devoted to specific networks; preliminary topics include T1 networks, satellite networks, software-defined networks and so-called Wide Area Networks (WANs).
This course introduces students to the techniques used to create web sites for basic and smart phones. Particular attention will be on gathering data about web traffic (e.g. visitors, visits, devices, operators, and locations) and analyze the data to engage the users and for business decision making. Content including social networking and privacy will be discussed in depth. The course also covers the development of mobile web applications using HTML5, CSS and AJAX for Android phones. The parallel with iPhone will be made. User-centered design, testing, quality assurance and performance will be covered throughout the course. The course integrates comprehensive assignments and significant readings.
This course introduces elements of formal specification and design and various inter-process communication mechanisms, including sockets, message-passing, and remote procedure calls, used in developing client/server and network applications. Students will use SDL (Specification and Description Language) and Java to design and implement an Internet-based distributed system. Topics include TCP/IP socket programming, Java RMI, Java Servlets, and JDBC.
This course familiarizes students with the development of mobile innovations addressing social and global challenges in areas such as health, microfinance, education and civic activism. Students will be introduced to research in the social considerations in mobile application development, ICT4D (Information and Technology for Development), and M4D (Mobile for Development) through readings, class discussions and a series of talks. The Mobile Web, and SMS and Voice Solutions will be presented in that context. Students will leverage their technical knowledge with social insight, creativity and ingenuity to develop prototype with social impact along with its deployment plan (taking into accounts the real world limitations) and a business model, with the guidance of local partners from NGOs and the industry, and successful social entrepreneurs.
Binary Space Partitioning: 3-D game engine editors; Designing interior and exterior of levels, using textures, Static and Dynamic Meshes; Techniques for creating Lightening, Waterfalls, and Rivers; Constructing new Textures and Static Meshes; Creating Terrains for landscapes; Creating movers; Creating Particle effects; Using AI to make advanced paths.
Internet as a service delivery platform. Utility computing. Functions of XML and web services for B2B system integration. Web service framework. Declaring platform-independent service API with WSDL. Encapsulating service invocation with SOAP. Implementation and consumption of web services on Java platform. Implementation and consumption of web services on MS NET platform. Cross-platform system integration. Web service security. Specifying business processes with XML dialect BPEL. Business process modeling for automated business process integration, coordination and execution.
3DSMax, and Maya to develop models; Polygon Creation, Triangulation; Character Modeling; Skeletons; Bone systems; Skinning; Character animation; Facial animation. Programming models to function.
This course explains the structure of the Unix operating system and shows how to write system and network programs. It is appropriate for students who want to learn how to write system software for Unix or for students who want to learn about the structure of a mutli-tasking, multi-user operating system. The course covers the details of the file system, terminal and device input/output, multi-tasking, interprocess communication, video displays, and network programming.
Overview of scripting and programming languages used in available 3D game engines. Programming constructs of the 3D game engine and their relations with the models and levels; Programming the player and bots to move around, swim, fly, and jump dynamically and randomly.
Server scalability and robustness. Introduction to mainframe computing. Separating data presentation generation and business logic with application servers. Software framework for Enterprise JavaBeans. Scalable business logic implementation with Enterprise Session JavaBeans. Event-driven system integration with message-driven Enterprise JavaBeans. Matching object domain model and relational data model. Enterprise server system security and deployment. Server virtualization as cloud services.
Internet/Linux server security overview. Cryptography concepts and their Java API. IP Security. Java Security framework. Java API for data confidentiality and identity authentication. Trust chains through digital certificate chains. Developing distributed applications with distributed Kerberos third-party authentication. Secure server application communications through SSL, TLS, HTTPS and VPN. Developing secure e-commerce transaction system supporting the Secure Electronic Transaction (SET) protocol. Secure server infrastructure with firewalls and Intrusion Detection Systems (IDS).
Web and Internet security overview. Securing web servers, application servers, and database servers. Client-side vs. server-side web application input validation. Java security policy and certificate management. Running Java applications through Java security manager. Defining Java security policies based in code based and code signatures. Secures web application session management. SQL injection prevention. URL hacking prevention. Secure web application development life cycle and maturity model. Web application auditing. Black box vs. white box web application security testing. Secure web application deployment.
This course covers the most important issues and topics in the huge area of cryptography and computer security. Topics include: Mathematics of Cryptography, Traditional Symmetric-Key Ciphers, Modern Symmetric-Key Ciphers, DES, AES, Asymmetric-Key Cryptography. RSA, Rabin, ElGamal and Elliptic Curve Cryptosystems, Message Integrity and Message Authentication, Cryptographic Hash Functions, Digital Signature, Entity Authentication and Key Management.
This course covers the most important issues and topics in the area if network security. A good balance between theory and practice is sought. It covers attacks and threats in computer networks, including network mapping, port scanning, sniffing. DoS, DDoS, reflection attacks, attacks in DNS and leveraging P2P deployments for attacks, operational security, including firewalls and intrusion-detection systems. It also takes a layered approach to network security covering topics that include: Security at the Application Layer: PGP and S/MIME, security at the Transport layer: SSL and TLS. Security at the Network Layer: IPSec. Students will use software tools to participate in an important simulated lab component that includes packet sniffing, network mapping, firewalls, SSL and IPsec.
This course introduces the student to computer vision algorithms, methods and concepts which will enable the student to implement computer vision systems with emphasis on visual pattern recognition. Upon successful completion of this course of study a student will have general knowledge of image analysis and processing, pattern recognition techniques, and some experience with research in computer vision. Topics to be studied; data structures for visual pattern representation, feature extraction, basis theory, decision trees, nearest neighbor, artificial neural networks, clustering etc. The students once completing the course should be competent enough to conduct research in this area. The students will be required to critique a current paper from the literature in this area, present it to the class, implement the presented algorithm and evaluate the strengths and shortcomings.
Introduction to mainframe computer architecture, mainframe OS, server virtualization, mainframe’s special role in server-based computing and cloud computing; z/OS overview, virtual storage, workload management, I/O and data management, z/OS vs. UNIX; TSO/E, ISPF, and UNIX, working with data sets, VSAM, catalogs and VTOC’s; JCL and SDSF, I/O redirection, JCL procedures, system libraries; batch processing and JES; COBOL for mainframe computing.
This course covers the Windows operating system API. The course covers the details of the file system, system calls, memory management, process control, inter-process communication, socket-based network programming, remote procedure call programming, threads and synchronization. By the end of the course, students will be able to write Windows system programs in the C language. The prerequisite is good programming skills in a higher level language.
Effective operation of Windows and Linux computers. Installation and management of analytics software. Effective usage of analytics cloud servers. Introduction to IBM Cognos BI Administration. Configuration and Customization of the Cognos BI Environment.
Design principles and practical techniques will be introduced for building and evaluating user-centered, intuitive, effective computing systems. Topics include principles of usage design, interface elements, user psychology, prototyping, and an introduction to interface evaluation. Project examples may include web design multimedia interfaces, mobile and specialize applications.
This course covers the fundamental mathematics needed for further study in data science, machine learning and artificial intelligence. Students will learn the theory and application of linear algebra, analytic geometry, matrix decompositions, vector calculus, probability theory and optimization. Building upon these mathematical foundations, the course culminates with an overview of some key machine learning concepts: linear regression; principal components analysis; density estimation; and support vector machines. The emphasis of this course is on the theory underlying data science methods and machine learning.
This course introduces students to the Python programming language with an emphasis on Python's data analytics libraries. Students will learn the fundamentals of Python and key modules including: scipy, numpy, scikit-learn, pandas, statsmodels, and matplotlib . The course covers basic language syntax, object types, variables, reading data from files and writing to files. Building on these concepts, students will create functions, and learn how to control program flow. Students will use Python to clean and prepare data, conduct exploratory data analysis, and build predictive models.
Data Modeling. Star and snow schema. Multi-dimensional modeling. Inman and Kimbel approaches to data warehousing. Changing Business with Data Insight. Architecting the Data Warehouse.
This course surveys methods for evaluating user interfaces. Students will learn essential knowledge to be able to perform heuristic evaluation, a cognitive walkthrough, a usability test and a comparison study. Class meetings will also introduce, discuss and occasionally practice additional techniques including user modeling, usage logging, surveys, and focus groups. A primary goal is to learn how to conduct various methods for evaluating user interfaces.
Enterprise intelligence through IBM Cognos Business Intelligence. Enterprise intelligence value proposal. Enterprise intelligence’s split personality; business and technology. Basic reporting and querying. Online analytical processing. Dashboard and briefing books. Human factors in enterprise intelligence implementation. Building a solid enterprise intelligence architecture and roadmap. Building enterprise intelligence project plan. Collecting user requirements. Enterprise intelligence design and development.
Students will learn the process of developing a product using the Design Thinking methodologies and the skills they have gained in the course of their studies. They will work in interdisciplinary teams and provide solutions to problems initiated by companies or sponsors. During the course, students will also learn the following topics: design thinking, product development, research methodologies, agile methodologies, user experience (UX), project management, prototyping and rapid iteration. This course evolves under the umbrella of the Pace NYC Design Factory.
The purpose of this course is for students to gain a solid foundation in the most important tools and strategies for addressing three common challenges in enterprise business intelligence: (1) reducing the time needed to produce insightful metrics and reports; (2) freeing data trapped inside of legacy tools and federated data sources; and, (3) providing a centralized framework for user interaction and consumption of analysis, reports and curated data. Students will use R and Python to ingest, model, analyze data, and report their results, and work with several popular database environments (e.g SQL Server, Oracle, MongoDB). Students will learn about and apply common machine learning algorithms, and understand and code the principles and foundational steps for selecting, building and validating a predictive model.
The purpose of the Analytics Capstone Project is for students to apply the knowledge and skills acquired during their master's program to a project involving actual data in a real world setting. During the project, students will apply the entire data science process from identifying a problem or opportunity, and collecting and processing actual data to applying suitable and appropriate analytic methods to find a solution. Both the problem statement for the project and the datasets will come from real-world domains similar to those that students might typically encounter within industry, government, or academic research. The course will culminate with each student making a presentation of his or her work, and submitting a final paper, and, if applicable, a computer application. This course requires a great deal of self-directed work and the ability to manage time and meet deadlines.
This course will provide an introduction to basic concepts and methodologies for digital image processing and the applications. Fundamental digital image processing techniques including enhancement, filtering, morphology, Fourier transform and segmentation will be discussed. The course will also introduce students how to use Matlab as an image processing tool. Matlab-based course projects will be used to illustrate and practice the image processing techniques. Students will gain understanding of algorithm design and hands-on experiences on how to process and analyze digital images using Matlab.
Students will learn how to design, implement, and evaluate a pipeline for supervised classification of structured data, using a variety of Machine Learning techniques (e.g., Logistic Regression). Apply Deep Learning techniques (e.g., Convolutional Neural Networks, Recurrent Neural Networks) to classify unstructured data, including images and text. Describe important considerations for applying Machine Learning in practice.
After reviewing relational databases and SQL, students will learn the fundamentals of alternative data storage schemas to deal with large amounts of data (structures and unstructured). The course covers big data and the development of the Hadoop file system, the MapReduce programming paradigm, and database management systems such as Cassandra, HBase and Neo4j. Students will learn about NoSQL, distributed databases, and graph databases. The course emphasizes the differences between traditional database management systems and alternatives with respect to accessibility, cost, transaction speed, and structure. Part of the course is dedicated to access, handle and process data from different sources and of different types using Python. The course provides hands-on practice.
This course provides students with an understanding of the concepts, technologies and implementation considerations behind blockchain. Using a hands-on approach, the course covers a range of essential topics, from distributed systems to the cryptographic foundations of blockchain to consensus and smart contracts. Blockchain applications across sectors are presented, with a focus on financial applications and new developments.
This course focuses on the algorithms needed for data analytics, and has a computational emphasis. Students will develop proficiency in Python and R, as they build algorithms and analyze data. Topics include data reduction: data mapping, data dictionaries, scalable algorithms, Hadoop, and MapReduce; gaining information from data: data visualization, regression modeling, and cluster analysis; and, predictive analytics: k-nearest neighbors, naïve Bayes, time series forecasting, and analyzing streaming data.
This course provides a detailed review of concepts, approaches and told as they are defined by SWEBOK. It is intended to be a review of topics related to the IEEE examination.
The objective of the course is to introduce the current theory and practice on knowledge representation and reuse, and a new paradigm that addresses business agility, process resilience, and leveraging of corporate knowledge. The course will demonstrate how business knowledge can be reused to attain major strategic benefits through decomposition of knowledge into components. It will show how these components of knowledge can be reconfigured in step with innovation and new learning, and how business configurations of knowledge in support of business agility.
Students choosing this option will, in consultation with a faculty advisor, select a significant computer science application, study its supporting technologies, design and implement the application, and present the project in form of a major Project Report and project demonstration. A brief written Project Proposal must be approved by the advisor, a committee chosen by the student and the advisor, and department chair. Students enrolled for Computer Science Project I will complete preparatory work culminating in a major Project Report. Those not electing to continue with Computer Science Project II will receive a grade for Computer Science Project I and may use it as a computer science elective.
Students enrolled in Computer Science Project II will finish their project begun in Computer Science Project I and write a major report. When the report has been completed, each student will be expected to give an oral presentation and project demonstration before the committee. The project advisor will assign a grade for the work in consultation with the committee. This grade will also be assigned to Computer Science Project I.
Students choosing this option will select and research a topic in computer science in consultation with a faculty advisor. A brief written Thesis Proposal must be approved by the advisor and a committee chosen by the student, advisor, and department chair. Students enrolled for Thesis I will complete preparatory research culminating in a written Thesis Report. Those not electing to continue with Thesis II will receive a grade for Thesis I and may use it as a computer science elective.
Students enrolled in Thesis II will finish their research begun in Thesis I and write a thesis. When the thesis has been completed, each student will be expected to give an oral presentation before the committee. The thesis advisor will assign a grade for the work in consultation with the committee. This grade will also be assigned to Thesis I.
A paid or unpaid field study experience in a working environment intended to provide the student with a practical extension and enhancement of knowledge gained in class. A research study or project done under the direction of a faculty advisor is required. No more than 3 credits of Field Study may be taken.
The purpose of this course is to acquire a thorough grounding in the core principles and foundations of computer science. After a review of foundational algorithm analysis, students will learn advanced algorithmic techniques such as randomized and approximation algorithms. Problems arising in number theory such as Primality Testing and Factorization will lead the path to study the RSA public-key crypto-system. Classical algorithms for String Matching, with applications to computational biology, such as Rabin-Karp and Knuth-Morris-Pratt, will also be studied. Advanced data structures particularly suited for certain applications, such as B-trees, van Emde Boas trees, and skip lists, will be studied. The question of what problems are hard to compute will be addressed studying the NP-completeness theory, including the identification of NP-hard problems by reductions. Hard problems such as Traveling Salesman, Knapsack, and Vertex Cover will be studied in the context of approximation algorithms..
Research seminar by domain experts, and student presentations on research papers.
The student will work closely with the advisor to conduct literature survey, identify a research problem with solution methodologies, and create a clear research plan for the dissertation.
Over the last ten years we have witnessed the successful application of many machine learning techniques on big data platforms based on the parallel computing paradigm and associated technologies such as distributed file systems, no-SQL databases, and stream computing engines. National security, machine translation, natural language understanding, online advertising, and personalized medicine, are some examples of such machine-learning, web-intelligence applications in the public eye. This course explores these applications and the machine-learning/statistical techniques that make them possible.
Advanced theory and applications of databases, including the relational calculus, functional dependence, query optimization, schema normalization and concurrent databases.
Advanced topics in Artificial Intelligence include planning, probabilistic reasoning, Markov decision processes, reinforcement learning, deep neural networks, Bayesian learning, and natural language processing.
This course provides an introduction to the theory and practice of quantum computing. Topics covered include quantum computing circuits, particularly quantum gates, and comparison with classical computing gates and circuits; quantum algorithms; mathematical models of quantum computation; quantum error correcting codes; and quantum cryptography.
This course covers advanced research topics in computer vision. Building on the introductory materials covered in the Computer Vision pre-requisite class, this class will prepare graduate students in both the theoretical foundations of computer vision as well as the practical approaches to building real Computer Vision systems. This course investigates current research topics in computer vision with an emphasis on recognition tasks and deep learning. Topics include optical flow, object tracking, object recognition, bag-of-features representation, deep neural networks, etc. We will examine data sources, features, and learning algorithms useful for understanding and manipulating visual data.
This course focuses on the fundamental concepts, theories, and algorithms for pattern recognition and machine learning. Diverse application areas such as optical character recognition, speech recognition, and biometrics are discussed. Topics covered include supervised and unsupervised (clustering) pattern classification algorithms, parametric and non-parametric supervised learning techniques, including Bayesian decision theory, discriminant functions, the nearest neighbor algorithm, and neural networks with emphasis on deep learning.
This course introduces techniques for estimating the cost and effort required for software production. Software costing, pricing, and scheduling are covered using advanced theoretical model and software tools such as COCOMO II. It also provides students with deep understanding of the notion of software metric and quality. Topics include productivity, estimation techniques, algorithmic cost and modeling, and project staffing.
This is the continuation of Software Development Studio I.