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.
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.
Blender 3D: Noob to Pro is a product of shared effort by numerous team members and anonymous editors. Its purpose is to teach people how to create three-dimensional computer graphics using Blender, a free software application. This book is intended to be used in conjunction with other on-line resources that complement it.
Table of Contents
1 Getting off the ground
2 The "Software crisis" and encapsulation
3 Classes and objects
4 Memory matters
6 UML class diagrams
7 The Singleton pattern
8 Java odds 'n' ends
9 UML sequence diagrams
10 Persistence and hydration
11 Inheritance (1 of 2)
12 Inheritance (2 of 2)
13 The Factory pattern
14 Team software development
15 Doing design (1 of 2)
16 Doing design (2 of 2)
17 Use cases
18 Documenting an API
About the Book
Blueprints is a concise yet comprehensive coverage of Object-Oriented Analysis and Design concepts, suitable for a second programming course in Computer Science. It introduces and teaches application development in a command-line environment, and assumes basic expertise with the Java programming language.
"A Byte of Python" is a free book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. If all you know about computers is how to save text files, then this is the book for you. There are many translations of the book available in different human languages.
The student will learn the mechanics of editing and compiling a simple program written in C++ beginning with a discussion of the essential elements of C++ programming: variables, loops, expressions, functions, and string class. Next, the student will cover the basics of object-oriented programming: classes, inheritance, templates, exceptions, and file manipulation. The student will then review function and class templates and the classes that perform output and input of characters to/from files. This course will also cover the topics of namespaces, exception handling, and preprocessor directives. In the last part of the course, the student will learn some slightly more sophisticated programming techniques that deal with data structures such as linked lists and binary trees. Upon successful completion of this course, students will be able to: Compile and execute code written in C++ language; Work with the elementary data types and conditional and iteration structures; Define and use functions, pointers, arrays, struct, unions, and enumerations; Write C++ using principles of object-oriented programming; Write templates and manipulate the files; Code and use namespaces, exceptions, and preprocessor instructions; Write a code that represents linked lists and binary trees; Translate simple word problems into C++ language. (Computer Science 107)
Although C# is derived from the C programming language, it introduces some unique and powerful features, such as delegates (which can be viewed as type-safe function pointers) and lambda expressions which introduce elements of functional programming languages, as well as a simpler single class inheritance model (than C++) and, for those of you with experience in "C-like" languages, a very familiar syntax that may help beginners become proficient faster than its predecessors. Similar to Java, it is object-oriented, comes with an extensive class library, and supports exception handling, multiple types of polymorphism, and separation of interfaces from implementations. Those features, combined with its powerful development tools, multi-platform support, and generics, make C# a good choice for many types of software development projects: rapid application development projects, projects implemented by individuals or large or small teams, Internet applications, and projects with strict reliability requirements. Testing frameworks such as NUnit make C# amenable to test-driven development and thus a good language for use with Extreme Programming (XP). Its strong typing helps to prevent many programming errors that are common in weakly typed languages.
C is the most commonly used programming language for writing operating systems. The first operating system written in C is Unix. Later operating systems like GNU/Linux were all written in C. Not only is C the language of operating systems, it is the precursor and inspiration for almost all of the most popular high-level languages available today. In fact, Perl, PHP, Python and Ruby are all written in C. By way of analogy, let's say that you were going to be learning Spanish, Italian, French, or Portuguese. Do you think knowing Latin would be helpful? Just as Latin was the basis of all of those languages, knowing C will enable you to understand and appreciate an entire family of programming languages built upon the traditions of C. Knowledge of C enables freedom.
CS120: A survey of the general concepts of computers and their applications. Concepts include computer systems, system and applications software, data organization and management, and computers in society. Specific applications with hands-on projects will include word processing, presentation management, spreadsheets, database, graphics, and web authoring.
This a computer literacy course. Computer literacy is knowing both how computers are involved with the world today and knowing how to get stuff done with current software. We will explore concepts to help you better use Internet resources.
This class is organized in weekly modules. Students work through the materials in each module sequentially.This course uses free resources from the Web instead of a text book.
Explores the disciplines and professions of Computer Science and Software Engineering.Overviews computer hardware and software architecture, the study of algorithms, software design and development, data representation and organization, problem-solving strategies, ethics in the digital world, and the history of computing and its influences on society. Explores career options and begins the process of planning a program of study. Exposes students to both low-level and high-level programming languages.
Computation and Computer Science
1. Computing Related Fields
2. History of computers
3. Binary and Bits
4. Data Representation
5. Logic Gates & Circuits
6. Computer Architecture & The Machine Cycle
7. Programming Languages
9. Operating Systems
10. Parallel Processing
11. Limits and Future of Computing
Nine Algorithms Book Supplements
Supplements to Nine Algorithms
Page Rank (Ch 3)
Diffie Hellman (Ch 4)
Error Detection & Correction (Ch 5)
Pattern Recognition & Machine Learning
Data Compression (Ch 7)
Authentication & Public Key Encryption (Ch 9 Replacement)
Search & AI
Databases And Concurrency (Ch 8)
Computability (Ch 10)
Is your understanding of Cloud GIS a bit hazy? Does thinking about it leave you in a fog? We've designed GEOG 865, Cloud and Server GIS, to help you understand how all of the various pieces of architecture fit together. By the end of the class you'll have a clear understanding of esri's and others' offerings in the space, how to implement ArcGIS Enterprise on Amazon EC2, make online maps with Carto and Mapbox, and engage in some blue sky thinking of your own in our weekly discussions about trends and directions.
This course introduces the compilation process, presenting foundational topics on formal languages and outline each of the essential compiler steps: scanning, parsing, translation and semantic analysis, code generation, and optimization. Upon successful completion of this course, the student will be able to: describe the compilation process and explain the function of the components that comprise the structure of a compiler; apply concepts of formal languages and finite-state machines to the translation of computer languages; identify the compiler techniques, methods, and tools that are applicable to other software applications; describe the challenges and state-of-the-practice of compiler theory and practice. This free course may be completed online at any time. (Computer Science 304)
" 6.004 offers an introduction to the engineering of digital systems. Starting with MOS transistors, the course develops a series of building blocks ŰÓ logic gates, combinational and sequential circuits, finite-state machines, computers and finally complete systems. Both hardware and software mechanisms are explored through a series of design examples. 6.004 is required material for any EECS undergraduate who wants to understand (and ultimately design) digital systems. A good grasp of the material is essential for later courses in digital design, computer architecture and systems. The problem sets and lab exercises are intended to give students "hands-on" experience in designing digital systems; each student completes a gate-level design for a reduced instruction set computer (RISC) processor during the semester."
This course is an introduction to computational theories of human cognition. Drawing on formal models from classic and contemporary artificial intelligence, students will explore fundamental issues in human knowledge representation, inductive learning and reasoning. What are the forms that our knowledge of the world takes? What are the inductive principles that allow us to acquire new knowledge from the interaction of prior knowledge with observed data? What kinds of data must be available to human learners, and what kinds of innate knowledge (if any) must they have?
Introduces design as a computational enterprise in which rules are developed to compose and describe architectural and other designs. The class covers topics such as shapes, shape arithmetic, symmetry, spatial relations, shape computations, and shape grammars. It focuses on the application of shape grammars in creative design, and teaches shape grammar fundamentals through in-class, hands-on exercises with abstract shape grammars. The class discusses issues related to practical applications of shape grammars.