"User Requirements and Relational Databases" is (2021 Revised) Chapter 1 of Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3604, Database Design.
"The Physical Data Model" is (2021 Revision of) Chapter 2 of Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3604, Database Design.
"Distributed Database Design" is (2021 Revision of) Chapter 3 of Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3504, Database Design.
"Security" is (2021 Revision of) Chapter 4 of Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3604, Database Design.
"Query Processing and Performance" is (2021 Revision of) Chapter 5 of Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3504, Database Design.
"Transaction Management" is (2021 Revision of) Chapter 6 of Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3604, Database Design.
"Transactions and the Database Recovery" is (2021 Revision of) Chapter 7 of Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3604, Database Design.
This assignment is designed for students in First Year Seminar for Engineering and Computer Science. The main goal of the assignment is to introduce students to their major and stimulating their interests related to career choices and academics. This will give students a chance to develop integrative learning skills by making connections between their major and respective career opportunities. This assignment will use new features of ePortfolio to enhance student‰Ûªs creativity by customizing everything from background, photos, fonts, text, portfolio content etc. Instead of a uniform profile, each students‰Ûª page will reflect the distinct visual representation of their personality, brand, major, and career. Students will review their peers‰Ûª ePortfolios to provide constructive feedback. The ePortfolio page will later be deposited once approved by the faculty.
This activity guides students through the evaluation of a website that they have created to see if it is accessible for users with disabilities. Students will simulate a number of different disabilities (e.g. visual impairments, color blindness, auditory impairments, motor impairments) to see if their website is accessible; they will also use automated W3 and WAVE tools to evaluate their sites. Students will consider the needs of users with disabilities by creating a persona and scenario of a user with disabilities interacting with their site. Finally, students will write up recommendations to change their site and implement the changes.
This presentation introduces Computer Science students to the notion of accessibility: developing software for people with disabilities. This lesson provides a discussion of why accessibility is important (including the legal, societal and ethical benefits) as well as an overview of different types of impairments (visual, auditory, motor, neurological/cognitive) and how developers can make their software accessible to users with those disabilities. This lesson includes videos and links to readings and tutorials for students.
An A-Frame Virtual Reality Programming activity for CS0 students. Part of the CUNY CS04All project.
An Encryption activity and worksheet for CS0 students. Part of the CUNY CS04All project.
A Python Functions activity - "Drawing with Turtle" - for CS0 students. Part of the CUNY CS04All project.
A Python Functions activity - "Scrabble game" - for CS0 students. Part of the CUNY CS04All project.
A Python IF-ELSE activity - "The Dating Equation" - for CS0 students. Part of the CUNY CS04All project.
A Python Lists activity - "Gift Exchange" - for CS0 students. Part of the CUNY CS04All project.
A Python Lists activity - "Hangman game" - for CS0 students. Part of the CUNY CS04All project.
" This is a graduate course on the design and analysis of algorithms, covering several advanced topics not studied in typical introductory courses on algorithms. It is especially designed for doctoral students interested in theoretical computer science."
This course will present advanced topics in Artificial Intelligence (AI), including inquiries into logic, artificial neural network and machine learning, and the Turing machine. Upon successful completion of this course, students will be able to: define the term 'intelligent agent,' list major problems in AI, and identify the major approaches to AI; translate problems into graphs and encode the procedures that search the solutions with the graph data structures; explain the differences between various types of logic and basic statistical tools used in AI; list the different types of learning algorithms and explain why they are different; list the most common methods of statistical learning and classification and explain the basic differences between them; describe the components of Turing machine; name the most important propositions in the philosophy of AI; list the major issues pertaining to the creation of machine consciousness; design a reasonable software agent with java code. (Computer Science 408)
Following a brief classroom discussion of relevant principles, each student completes the paper design of several advanced circuits such as multiplexers, sample-and-holds, gain-controlled amplifiers, analog multipliers, digital-to-analog or analog-to-digital converters, and power amplifiers. One of each student's designs is presented to the class, and one may be built and evaluated. Associated laboratory emphasizing the use of modern analog building blocks. Alternate years.
This course will expand upon SQL as well as other advanced topics, including query optimization, concurrency, data warehouses, object-oriented extensions, and XML. Additional topics covered in this course will help you become more proficient in writing queries and will expand your knowledge base so that you have a better understanding of the field. Upon successful completion of this course, the student will be able to: write complex queries, including full outer joins, self-joins, sub queries, and set theoretic queries; write stored procedures and triggers; apply the principles of query optimization to a database schema; explain the various types of locking mechanisms utilized within database management systems; explain the different types of database failures as well as the methods used to recover from these failures; design queries against a distributed database management system; perform queries against database designed with object-relational extensions; develop and query XML files. (Computer Science 410)
Recent results in cryptography and interactive proofs. Lectures by instructor, invited speakers, and students. Alternate years. The topics covered in this course include interactive proofs, zero-knowledge proofs, zero-knowledge proofs of knowledge, non-interactive zero-knowledge proofs, secure protocols, two-party secure computation, multiparty secure computation, and chosen-ciphertext security.
" This course covers concepts and techniques for the design and implementation of large software systems that can be adapted to uses not anticipated by the designer. Applications include compilers, computer-algebra systems, deductive systems, and some artificial intelligence applications. Topics include combinators, generic operations, pattern matching, pattern-directed invocation, rule systems, backtracking, dependencies, indeterminacy, memoization, constraint propagation, and incremental refinement. Substantial weekly programming Assignments and Labs are an integral part of the subject. There will be extensive programming Assignments and Labs, using MIT/GNU Scheme. Students should have significant programming experience in Scheme, Common Lisp, Haskell, CAML or some other "functional" language."
Building on Complex Adaptive Systems theory and basic Agent Based Modeling knowledge presented in SPM4530, the Advanced course will focus on the model development process. The students are expected to conceptualize, develop and verify a model during the course, individually or in a group. The modeling tasks will be, as much as possible, based on real life research problems, formulated by various research groups from within and outside the faculty.
Study Goals The main goal of the course is to learn how to form a modeling question, perform a system decomposition, conceptualize and formalize the system elements, implement and verify the simulation and validate an Agent Based Model of a socio-technical system.
This course focuses on the fundamentals of computer algorithms, emphasizing methods useful in practice. Upon successful completion of this course, the student will be able to: explain and identify the importance of algorithms in modern computing systems and their place as a technology in the computing industry; indentify algorithms as a pseudo-code to solve some common problems; describe asymptotic notations for bounding algorithm running times from above and below; explain methods for solving recurrences useful in describing running times of recursive algorithms; explain the use of Master Theorem in describing running times of recursive algorithms; describe the divide-and-conquer recursive technique for solving a class of problems; describe sorting algorithms and their runtime complexity analysis; describe the dynamic programming technique for solving a class of problems; describe greedy algorithms and their applications; describe concepts in graph theory, graph-based algorithms, and their analysis; describe tree-based algorithms and their analysis; explain the classification of difficult computer science problems as belonging to P, NP, and NP-hard classes. (Computer Science 303)
This is a textbook for first year Computer Science. Algorithms and Data Structures With Applications to Graphics and Geometry.
In-depth study of an active research topic in computer graphics. Topics change each term. Readings from the literature, student presentations, short assignments, and a programming project. Animation is a compelling and effective form of expression; it engages viewers and makes difficult concepts easier to grasp. Today's animation industry creates films, special effects, and games with stunning visual detail and quality. This graduate class will investigate the algorithms that make these animations possible: keyframing, inverse kinematics, physical simulation, optimization, optimal control, motion capture, and data-driven methods. Our study will also reveal the shortcomings of these sophisticated tools. The students will propose improvements and explore new methods for computer animation in semester-long research projects. The course should appeal to both students with general interest in computer graphics and students interested in new applications of machine learning, robotics, biomechanics, physics, applied mathematics and scientific computing.
This course will provide an overview of a new vision for Human-Computer Interaction (HCI) in which people are surrounded by intelligent and intuitive interfaces embedded in the everyday objects around them. It will focus on understanding enabling technologies and studying applications and experiments, and, to a lesser extent, it will address the socio-cultural impact. Students will read and discuss the most relevant articles in related areas: smart environments, smart networked objects, augmented and mixed realities, ubiquitous computing, pervasive computing, tangible computing, intelligent interfaces and wearable computing. Finally, they will be asked to come up with new ideas and start innovative projects in this area.
Appendix 1. Case Studies for Essential Aspects of Physical Design and Implementation of Relational Databases, an open textbook for CST3604, Database Design. See attached files for additional appendices.
This two week assignment asks students to interpret and analyze the 1974 Arecibo Message sent by Drake and Sagan. Week 1 introduces the concepts behind the construction of the message and engages with a critical analysis of the architecture and the contents of the message. Week 2 asks students to develop software in a Jupyter Notebook (available for free from the Anaconda Python Distribution) to interpret messages that were similar to those produced by Drake and Sagan.
This course includes materials on AI programming, logic, search, game playing, machine learning, natural language understanding, and robotics, which will introduce the student to AI methods, tools, and techniques, their application to computational problems, and their contribution to understanding intelligence. The material is introductory; the readings cite many resources outside those assigned in this course, and students are encouraged to explore these resources to pursue topics of interest. Upon successful completion of this course, the student will be able to: Describe the major applications, topics, and research areas of artificial intelligence (AI), including search, machine learning, knowledge representation and inference, natural language processing, vision, and robotics; Apply basic techniques of AI in computational solutions to problems; Discuss the role of AI research areas in growing the understanding of human intelligence; Identify the boundaries of the capabilities of current AI systems. (Computer Science 405)
An introduction to the main techniques of Artifical Intelligence: state-space search methods, semantic networks, theorem-proving and production rule systems. Important applications of these techniques are presented. Students are expected to write programs exemplifying some of techniques taught, using the LISP lanuage.
This course introduces students to the basic knowledge representation, problem solving, and learning methods of artificial intelligence. Upon completion of 6.034, students should be able to develop intelligent systems by assembling solutions to concrete computational problems, understand the role of knowledge representation, problem solving, and learning in intelligent-system engineering, and appreciate the role of problem solving, vision, and language in understanding human intelligence from a computational perspective.
This course provides a challenging introduction to some of the central ideas of theoretical computer science. Beginning in antiquity, the course will progress through finite automata, circuits and decision trees, Turing machines and computability, efficient algorithms and reducibility, the P versus NP problem, NP-completeness, the power of randomness, cryptography and one-way functions, computational learning theory, and quantum computing. It examines the classes of problems that can and cannot be solved by various kinds of machines. It tries to explain the key differences between computational models that affect their power.
If you've ever spent hours renaming files or updating hundreds of spreadsheet cells, you know how tedious tasks like these can be. But what if you could have your computer do them for you?
In Automate the Boring Stuff with Python, you'll learn how to use Python to write programs that do in minutes what would take you hours to do by hand-no prior programming experience required. Once you've mastered the basics of programming, you'll create Python programs that effortlessly perform useful and impressive feats of automation to:
Search for text in a file or across multiple files
Create, update, move, and rename files and folders
Search the Web and download online content
Update and format data in Excel spreadsheets of any size
Split, merge, watermark, and encrypt PDFs
Send reminder emails and text notifications
Fill out online forms
Step-by-step instructions walk you through each program, and practice projects at the end of each chapter challenge you to improve those programs and use your newfound skills to automate similar tasks.
Don't spend your time doing work a well-trained monkey could do. Even if you've never written a line of code, you can make your computer do the grunt work. Learn how in Automate the Boring Stuff with Python.
Graduate-level introduction to automatic speech recognition. Provides relevant background in acoustic theory of speech production, properties of speech sounds, signal representation, acoustic modeling, pattern classification, search algorithms, stochastic modeling techniques (including hidden Markov modeling), and language modeling. Examines approaches of state-of-the-art speech recognition systems. Introduces students to the rapidly developing field of automatic speech recognition. Its content is divided into three parts. Part I deals with background material in the acoustic theory of speech production, acoustic-phonetics, and signal representation. Part II describes algorithmic aspects of speech recognition systems including pattern classification, search algorithms, stochastic modelling, and language modelling techniques. Part III compares and contrasts the various approaches to speech recognition, and describes advanced techniques used for acoustic-phonetic modelling, robust speech recognition, speaker adaptation, processing paralinguistic information, speech understanding, and multimodal processing.
This textbook was written for a community college introductory course in spreadsheets utilizing Microsoft Excel. While the figures shown utilize Excel 2016, the textbook was written to be applicable to other versions of Excel as well. The book introduces new users to the basics of spreadsheets and is appropriate for students in any major who have not used Excel before.
Study of an area of current interest in theoretical computer science. Topic varies from term to term. This course is a study of Behavior of Algorithms and covers an area of current interest in theoretical computer science. The topics vary from term to term. During this term, we discuss rigorous approaches to explaining the typical performance of algorithms with a focus on the following approaches: smoothed analysis, condition numbers/parametric analysis, and subclassing inputs.
While big data infiltrates all walks of life, most firms have not changed sufficiently to meet the challenges that come with it. In this course, you will learn how to develop a big data strategy, transform your business model and your organization.
This course will enable professionals to take their organization and their own career to the next level, regardless of their background and position.
Professionals will learn how to be in charge of big data instead of being subject to it. In particular, they will become familiar with tools to:
assess their current situation regarding potential big data-induced changes of a disruptive nature,
identify their options for successfully integrating big data in their strategy, business model and organization, or if not possible, how to exit quickly with as little loss as possible, and
strengthen their own position and that of their organization in our digitalized knowledge economy
The course will build on the concepts of product life cycles, the business model canvas, organizational theory and digitalized management jobs (such as Chief Digital Officer or Chief Informatics Officer) to help you find the best way to deal with and benefit from big data induced changes.