" 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."
This book is a guide to implement simple agent-based evolutionary models using NetLogo.
All the models we implement are agent-based, i.e. individual agents and their interactions are explicitly represented in the models. To formalise agents’ interactions we use the basic framework of Evolutionary Game Theory.
NetLogo is a multi-agent programmable modeling environment used by hundreds of thousands of students, teachers and researchers all around the globe. No coding experience is necessary to fully understand the contents of this book.
Table of Contents
0.1. Introduction to evolutionary game theory
0.2. Introduction to agent-based modeling
0.3. Introduction to Netlogo
0.4. The fundamentals of NetLogo
1. Our first agent-based evolutionary model
1.0. Our very first model
1.1. Extension to any number of strategies
1.2. Noise and initial conditions
1.3. Interactivity and efficiency
1.4. Analysis of these models
1.5. Answers to exercises
2. Spatial interactions on a grid
2.0. Spatial chaos in the Prisoner's Dilemma
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.
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.
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)
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.
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.
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.
- Computer Science
- Physical Geography
- Material Type:
- Full Course
- Penn State University
- Provider Set:
- Penn State's College of Earth and Mineral Sciences (http:// e-education.psu.edu/oer/)
- Sterling Quinn
- Date Added:
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.
Study and discussion of computational approaches and algorithms for contemporary problems in functional genomics. Topics include DNA chip design, experimental data normalization, expression data representation standards, proteomics, gene clustering, self-organizing maps, Boolean networks, statistical graph models, Bayesian network models, continuous dynamic models, statistical metrics for model validation, model elaboration, experiment planning, and the computational complexity of functional genomics problems.
In EARTH 801, you will develop skills in a programming language designed for visual arts and visualization while exploring Earth science topics. Specifically, you'll learn and practice digital graphics capabilities in order to render Earth science concepts that are otherwise difficult to visualize due to complicated space and time scales. Here, you will interact with large, open, freely-available data sets by collecting, plotting, and analyzing them using a variety of computational methods. You'll be ready to teach secondary school students a range of Next Generation Science Standard skills involving data collecting, manipulation, analysis, and plotting. You'll also read and discuss current research regarding the teaching, learning, and evaluation of visualization skills, as well as multiple external representations of science concepts.
The purpose of this course is to cultivate an understanding of modern computing technology through an in-depth study of the interface between hardware and software. The student will study the history of modern computing technology before learning about modern computer architecture, then the recent switch from sequential processing to parallel processing. Upon completion of this course, students will be able to: identify important advances that have taken place in the history of modern computing and discuss some of the latest trends in computing industry; explain how programs written in high-level programming language, such as C or Java, can be translated into the language of the hardware; describe the interface between hardware and software and explain how software instructs hardware to accomplish desired functions; demonstrate an understanding of the process of carrying out sequential logic design; demonstrate an understanding of computer arithmetic hardware blocks and floating point representation; explain how a hardware programming language is executed on hardware and how hardware and software design affect performance; demonstrate an understanding of the factors that determine the performance of a program; demonstrate an understanding of the techniques that designers use to improve the performance of programs running on hardware; demonstrate an understanding of the importance of memory hierarchy in computer design and explain how memory design impacts overall hardware performance; demonstrate an understanding of storage and I/O devices, their performance measurement, and redundant array of inexpensive disks (more commonly referred to by the acronym RAID) technology; list the reasons for and the consequences of the recent switch from sequential processing to parallel processing in hardware manufacture and explain the basics of parallel programming. (Computer Science 301)
Detailed introduction to the basic hardware and software, architectural components for computer communications in local area networks. The components that are focused upon include understanding the basics of computer networks, switching, routing, protocols and security.
Introduction to computer graphics hardware, algorithms, and software. Topics include: line generators, affine transformations, line and polygon clipping, splines, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and animation. Substantial programming experience required. 6.837 offers an introduction to computer graphics hardware, algorithms, and software. Topics include: line generators, affine transformations, line and polygon clipping, splines, interactive techniques, perspective projection, solid modeling, hidden surface algorithms, lighting models, shading, and animation. Substantial programming experience is required.
This book was developed in an attempt to maintain in one location the information and references that point to the many important historical developments of the short life of the computer graphics world as we know it.