Computer Science (CS)
s: This course is designed for students majoring in science and focuses upon the use of the computer as a scientific tool. Students will learn programming using C++ or Java and will use various scientific software packages, as well as word processing and spreadsheets.
Proof techniques: proof by example, counterexample, contradiction, and induction; mathematical logic: propositional logic, predicate logic, Boolean algebra and applications in the design of combinational circuits; set theory: operations, cardinality, relations, and functions; introduction to graph theory: basic and weighted graphs, paths, and trees; combinatorics: fundamental principle of counting, permutations, combinations, and the pigeonhole principle.
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. Problem-solving through course projects.
Java packages. Abstract classes and interfaces. Class inheritance and polymorphism. Recursion and linked lists. Object modeling with UML. Event-driven programming and basic GUI design with Java FX. Multi-threading and thread synchronization. Problem-solving through course assignments and a substantial project.
An introduction to object oriented programming in a language such as Java. The fundamentals of programming will be covered, including control structures and object oriented design, objects, Java Development Kit, Java bytecode, the AWT package, Java applets and graphical user interfaces.
A continuation of CS 152. Object oriented programming, the class hierarchy, encapsulation, data types, and control flow. Client-Server programming. The Java Servlet API.
An introduction to Internet scripting languages, such as Java script, CGI programming using Perl and Tcl/Tk. Students will create web pages incorporating scripts and compare and contrast the currently available scripting languages.
This course teaches students the mathematics that are fundamental for further study in computer science. Through a combination of readings, videos, and brief quizzes, students gain the necessary knowledge and skills to pass the Math Placement Exam allowing for successful computer science study.
Students study a number of topics in discrete mathematics. One of the topics is an initial discussion of formal methods, a logical approach to writing computer programs. Students also study an introduction to mathematical logic (propositional and predicate calculus), mathematical induction, theory of sets, theory of integers and sequences, along with some introduction to graph theory. Mathematical logic is treated as an integral part of each topic of the course. A semiautomatic theorem prover is used to assist students in proving theorems.
This course facilitates the development of a deep understanding of the hardware environment of computing devices and the interface it provides to the associated software. Students need to understand computer organization to develop software artifacts that can achieve high performance through their awareness of concurrency, consistency, parallelism, and latency. They will acquire an understanding and appreciation of a computer system’s characteristics, performance, interactions, and functional components as well as the challenge of harnessing parallelism to sustain performance improvements. In selecting a system to use, students will be able to understand the tradeoff among various components, such as CPU clock speed, cycles per instruction, memory size, average memory access time, pipelining, vector processing, and multiprocessors, and multicomputers.
Concepts of abstract data types (ADT) including stack, queue, priority queue, hash table, and binary search tree. Problem-Solving with the ADTs. Tradeoffs of ADT implementation with arrays and linked lists. Basic sorting and searching algorithms. Algorithm run-time analysis.
Applications of abstraction and divide-and-conquer in computer science (hardware, software, theory); essential algorithms including searching, sorting, hashing and graphs; popular algorithms such as branch-and-bound, RSA and their applications; computing complexity and computability, NP-hard problems, NP-complete problems, and undecidable problems; and finite state automata vs. regular expressions.
Introduction to fundamental concepts and mechanisms of Unix and C programming. UNIX topics include Unix shells, shell variables, file system, and common Unix commands and programming with shell script. C language topics include structs, pointer arithmetic, call-by-value versus call-by- reference, strings, I/O basics, macros and conditional compilation, and program structure. Working with Ubuntu on the secure cloud services platform Amazon Web Services (AWS). Getting familiar with Git and Github to be able to use these tools on team projects.
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.
A direct experience in the working environment, intended to provide the student with a practical extension and enhancement of knowledge gained in class. The student has an assignment and is directed by professionals in the normal working environment. The student must also report to and consult with his or her faculty advisor who provides overall academic supervision.
Qualitative and quantitative research methods. Mathematical modeling of scientific, business, and social problems, hypothesis development and validation; key factor identification; experiment design; data-driven decision-making; and survey design and data analysis. Digital age social and legal issues, professional ethics, information privacy, and security. Technical writing and oral presentation.
Fundamental concepts of Internet computing and component based-software engineering; web application architecture; HTTP protocol; presentation tier techniques: servlets and JavaServer Pages (JSP), JavaServer (JSF); application server technique: Enterprise JavaBeans (EJB).
The course prepares students to innovate in the technology sector by exposing them to the latest technologies. Students will survey the latest technologies and learn to design and develop systems to solve business problems. The course will explore the use and impact of technology on businesses through case studies and interviews with professionals in the field. Students will develop a comprehensive technological solution to a specific business problem integrating across disciplines using at least one of the technologies learned in the course.
The World-Wide Consortium’s (W3C) eXtensible Markup Language (XML) has rapidly emerged as a standard that is used in a wide variety of applications related to the Web and e-commerce. XML is becoming a very important new technology used everywhere in the 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.
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.
This course introduces file system forensics analysis. Understanding how file systems work is essential in discovering hidden evidence and recovering deleted data. This course offers an overview and detailed knowledge of the file system and disc layout. Data structures, analyzes example disk images, and investigation scenarios are covered. Current open source file system analysis tolls will be used in labs.
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 Stduio.NET IDE.
This course will provide an overview of topics such as introduction to data mining and knowledge history; 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.
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, future 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. br />
This course covers the basic concepts of static and dynamic data protection; the creation and maintenance of secure software systems; network and Internet threat, vulnerabilities, attack scenarios, and countermeasures; and protection of personal data and individual privacy. The main topics include threat and system vulnerabilities; software vulnerabilities; cryptography; authentication and access control; secure operating systems; risk management; legal, ethical, and privacy issues. Hands-on laboratory exercises further reinforce some of the key concepts of the main topic.
Introduction to the concepts of theoretical computer science. Topics include finite state machines, pushdown automata, turing machines, theory of formal languages, hierarchy of languages and grammars, computability, decidability, and computational complexity.
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 provides a study of the history of programming languages including the imperative, object-oriented, functional and logical varieties. Emphasis is on principles of language design, and tools, and overviews the other phases of the compilation process. Students develop the scanner and the parser of an experimental language in Java, and design the solutions to various programming exercises in diverse programming languages.
This course provides a study of the history of programming languages including the imperative, object-oriented, functional and logical varieties.
This course surveys methods for evaluating computer user interfaces. Students will learn essential knowledge to be able to perform a heuristic evaluation, a cognitive walkthrough, a usability test and a comparison study. Class meeting 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.
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 learns 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.
Computer Organization review. Operating system structure. Process/thread management and Java multi-thread programming. Memory management. Virtual memory. File system interface and implementation. I/O systems. Distributed systems and Java networking programming. Protection and security.
Advanced topics in operating systems, including parallel processing, distributed and local network operating systems. The course includes laboratory work involving UNIX and MVS.
This course focuses on the development of applications for different mobile platforms including phones, tablets, and telehealth devices with various sensors. The software/hardware codesign approach of application development including time and performance optimization and trade-off will be emphasized. Students will learn how to design and develop applications for the Android platform, and understand the parallel process for iPhone development. Covered topics include user interface and architecture design, operating systems, storing and retrieving data, distributed computing, mobile hardware, network/web access, and multimedia.
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.
Consideration of processes by which machines simulate intelligence; heuristic and algorithmic processes in problem solving and programming machines to play simple games; models of cognitive process; applications and limitations of machine intelligence.
This course presents the fundamental concepts of database design and use. It provides a study of data models, data description languages, query facilities including relational algebra and SQL, data normalization, transactions and their properties, physical data organization and indexing, security issues and object databases. The knowledge of the above topics will be applied in the design and implementation of a database application using a target database management system.
This course provides a foundation in digital communications as a basis for modern telecommunications systems, computer networks, and the Internet. Topics include signals and information transmission, bandwidth and capacity, transmission media (wired, optical and wireless), digital multimedia, modulation, multiplexing, network security, error control, link-layer protocols, networking strategies, layered architectures, and an introduction to the principles of local area networks and the Internet.
Phases of software engineering process models including requirements, architecture, design, coding, testing, and maintenance. Strength and weakness of software development process models. Team work and effective communications. Professional ethics. Students will collaboratively define requirements, propose design options, and implement a substantial software project.
This course provides an introduction to data science and the R programming language. Students will learn the fundamentals of the R language with an emphasis on its use in data analytics. 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 learn to clean and prepare data, conduct exploratory data analysis, and develop predictive models. Course assignments use data from multiple fields. Classwork includes Labs allowing students practice working with R.
Topics of current interest in computer science in the area of the instructor specialty.
A focus on emerging and promising software development techniques such as formal transformations. This course will emphasize the practical applications of formal methods in various phases of the software development lifecycle. Students will be a given a medium size project statement written in natural language and will work gradually to develop formal specifications, data and algorithm refinement, and finally proofs of correctness and completeness of their designs.
This course covers a number of techniques for designing large-scale software systems. Students study the principles and methods for developing high quality software systems using object-oriented technology and its applications. Topics include object-oriented modeling, design using design patterns and object-oriented frameworks.
The theory of social choice and voting has had a long history in the social sciences, dating back to the 18th century. Some modern issues facing the theory of social choice relate heavily to computer science. Often we need to determine preferences for an individual or group, while maintaining accuracy, fairness, and security, sometimes with only limited information and/or computational power. This course will consider computer science and social science issues in insuring the best choices given limited information and computation. It will build on early work on the computational complexity of computing the winner of an election. Moreover, voting/social choice issues are beginning to arise in strictly computer science applications such as database and information retrieval, Internet search and meta-search, and collaborative filtering. This course will also consider such applications and present an introduction to the concepts and models of individual preference or utility as well as social choice theory and introduce students to a variety of modern computational issues and computer science applications.
This course integrates computing and finance with an experiential perspective to provide the students analytical and quantitative skills needed for sound financial decision-making and product creation. The course will emphasize creative problem solving of mathematical models and innovative numerical algorithms for financial scenarios such as derivatives valuation, portfolio allocation, hedging strategies and fixed income analysis.
In-depth study of cross-platform enterprise system integration with Web services. Topics include enterprise computing challenges and Service-Oriented Architecture (SOA); functions of XML and Web services in B2B system integration; introduction to XML, Web architecture, and HTTP protocol; Web service architecture; Web Service Definition Language (WSDL); Simple Object Access Protocol (SOAP); UDDI Web service registries; Web service security; and introduction of C# .NET for Java programmers. Course projects include the implementation and consumption of Web services on both the Java and Microsoft .NET platforms for demonstrating cross-platform system integration.
This course will be organized around a series of IBM talks and hands-on technical labs.The talks will include career sessions, and a number of overview sessions on topics such as open source and open standards,collaboration technologies, Service Oriented Architecture (SOA), and Web Services. The talks will be video-conferenced between New York City and Pleasantville. The lab sessions will include an introduction to eclipse, DB2 and the Rational software products.
Parallel vs. distributed computing, multiprocessor and multi-computer architectures, parallel programming languages and algorithims, shared-memory and message-passing programming, distributed architectures, socket-level and sortware-framework based programming, cluster-based computing, and grid computing will all be discussed.
This course covers distributed component technologies and their application in enterprise Web applications. It focuses on the latest non-proprietary application server and distributed component technologies.
This course explores the range and depth of problems and challenges which can be designed and solved using consumer-level robotics equipment. Students will perform a series of team-based labs which will explore advanced features of LEGO Mindstorms and their use in problem solving. They will also participate in design exercises to create new robotic challenges in or more application areas.
This course is intended to provide students with an overview of the technology, science, art and engineering involved in the creation of computer games. The focus of the course will be design and development of computer games. Students will study software technologies relevant to computer game design, including multi-media design systems. A variety of areas of computer science will be covered, namely: modeling, computer graphics, game theory, software engineering, human computer interaction, graphic design, and game aesthetics.
This is an interdisciplinary course designed to provide students with an entrepreneurial mindset in the context of information and computational technologies and algorithms as well as to equip them with tools appropriate to identifying real business opportunities worthy of pursuit. Technology industries and applications will be emphasized along with computing opportunities. The main concepts covered are creativity and innovation; market analysis; customer-driven product identification and development; technology-based business creation, financing, and management; competitive business plans; and niche marketing. Two key components of this course will be a project to develop a business plan for a technology venture around a specific product or system, wherein entrepreneurs will serve as mentors to students and teams, and a business plan competition where other industry experts and entrepreneurs will serve as judges. The course will be supplemented with up to three guest lectures as well as the review and analysis of entrepreneur case studies.
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
This course will expose students to both technical and professional business concepts necessary to support and defend the network infrastructure and the business information systems within an organization. Students who complete this course will be able to develop an understanding of security threats and vulnerabilities on different platforms, and will learn to respond to and recover from security incidents. The course will emphasize collaborative learning through discussions with instructors and peers, self-learning through readings and research, and experiential learning through lab assignments. The course curriculum is mapped to the Collegiate Cyber Defense Competition (CCDC) model (hhtp://www.nationalccdc.org). Students will be encouraged to participate in such competitions.
This is a project-based course using pyro (Python Robotics). This course addresses the problems of controlling and motivating robots to act intelligently in dynamic, unpredictable environments. Major topics will include: navigation and control, mapping and localization, robot preception using vision and sonar, kinematics and inverse kinematics, and robot simulation environments. To demonstrate these concepts we will be using a simulated robot (and lego if possible).
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 server.
This course is designed for students who wish to learn how to use the Linux operating system and write programs in the Unix shell language and in the C programming language. No prior knowledge of Linux is assumed. We begin by covering basic Unix commands, then learn how to write shell scripts for system administration. We will cover Unix system calls, how to manage Unix processes. Finally, we will learn the basics of C language programming, including pointers, arrays and structs.
This course surveys the field of natural computation and its relation to informatics. Informatics studies the structure, algorithms, behavior, and interactions of natural and artificial systems that store, process, access and communicate information. Natural computing refers to a collection of disciplines that unite nature with computing where: nature serves as a source of inspiration for the development of computational tools or systems that are used for solving complex problems; computers are used as a means of synthesizing the structural patterns and behaviors of natural phenomena; and natural materials such as DNA are employed as the the computers.
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.
This course is an extended review of the relationships of music, mathematics and computer science. It examines the relationships of music and mathematics from Pythagoras to J.S. Bach and W.A. Mozart as well as focusing on modern digital music and Ianis Xenakis. It explores the areas of mathematics that are used in music theory and music composition. Because of computer science only recently composers can incorporate complex mathematical models in composition without having to make the tedious calculations they require.
This course provides an introductory overview of system programming in the Windows environment, mainly focusing on system-level programming based on OS services and other APIs. Topics include system calls, file I/O, files and directories, memory management, process control, inter-process communication (IPC), and socket-based network programming. Coursework includes programming assignments and a final exam.
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 course introduces students to models of financial processes through service-oriented architecture (SOA) methods and cloud computing. The focus of the course is on a program management methodology for projects enabling for efficiency and flexibility in process through Web services and SOA. The course concludes with students presenting models of financial processes and systems that contribute a competitive edge to financial firms through innovative technologies of leading SOA technology firms that market to Wall Street and other financial districts.
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.
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.
Computational geometry addresses geometric questions using ideas from algorithms, data structures, complexity theory, and combinatorics. As such, it provides a nice set of applications from these disciplines and also contains features that are interesting and useful in their own right. The aim of this course is two fold: to familiarize the student with data structures that are more efficient than those traditionally included in the undergraduate curriculum, and to introduce the student to applications of those data structures using computational geometry.
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.
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.
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.
This course provides a top-down study of modern computer networking and the Internet. Application layer topics include the Web, HTTP, FTP, SMTP, DNS, and socket programming. Transport layer topics include UDP, TCP, and congestion control. Network layer topics include link state routing, distance vector routing, IPv4, RIP, OSPF, BGP, IPv6, multicasting and IGMP, and mobile IP. Local area network topics include Ethernet, IEEE, 802.11, and Bluetooth.
With the approval of the appropriate faculty member, department chair, and academic dean, students may select a topic for guided research that is not included in the regular course offerings. The student meets regularly with the faculty member to review progress. A research project or paper must also be submitted.