6.895 covers theoretical foundations of general-purpose parallel computing systems, from languages to …
6.895 covers theoretical foundations of general-purpose parallel computing systems, from languages to architecture. The focus is on the algorithmic underpinnings of parallel systems. The topics for the class will vary depending on student interest, but will likely include multithreading, synchronization, race detection, load balancing, memory consistency, routing networks, message-routing algorithms, and VLSI layout theory. The class will emphasize randomized algorithms and probabilistic analysis, including high-probability arguments.
This book is about complexity science, data structures and algorithms, intermediate programming …
This book is about complexity science, data structures and algorithms, intermediate programming in Python, and the philosophy of science. This book focuses on discrete models, which include graphs, cellular automata, and agent-based models. They are often characterized by structure, rules and transitions rather than by equations. They tend to be more abstract than continuous models; in some cases there is no direct correspondence between the model and a physical system.
The examples and supporting code for this book are in Python. You …
The examples and supporting code for this book are in Python. You should know core Python and you should be familiar with object-oriented features, at least using objects if not defining your own. If you are not already familiar with Python, you might want to start with my other book, Think Python, which is an introduction to Python for people who have never programmed, or Mark Lutz’s Learning Python, which might be better for people with programming experience.
Data structures and algorithms are among the most important inventions of the …
Data structures and algorithms are among the most important inventions of the last 50 years, and they are fundamental tools software engineers need to know. But in my opinion, most of the books on these topics are too theoretical, too big, and too bottom-up: *Too theoretical: Mathematical analysis of algorithms is based on simplifying assumptions that limit its usefulness in practice. Many presentations of this topic gloss over the simplifications and focus on the math. In this book I present the most practical subset of this material and eliminate the rest. *Too big: Most books on these topics are at least 500 pages, and some are more than 1000. By focusing on the topics I think are most useful for software engineers, I kept this book under 250 pages. *Too bottom-up: Many data structures books focus on how data structures work (the implementations), with less about how to use them (the interfaces). In this book, I go “top down”, starting with the interfaces. Readers learn to use the structures in the Java Collections Framework before getting into the details of how they work. Finally, many present this material out of context and without motivation: it’s just one damn data structure after another!
I try to alleviate the boredom by organizing the topics around an application—web search—that uses data structures extensively, and is an interesting and important topic in its own right.
This application also motivates some topics that are not usually covered in an introductory data structures class, including persistent data structures, with Redis, and streaming algorithms. I have made difficult decisions about what to leave out, but I have made some compromises. I include a few topics that most readers will never use, but that they might be expected to know, possibly in a technical interview. For these topics, I present both the conventional wisdom as well as my reasons to be skeptical. This book also presents basic aspects of software engineering practice, including version control and unit testing. Each chapter ends with an exercise that allows readers to apply what they have learned. Each exercise includes automated tests that check the solution. And for most exercises, I present my solution at the beginning of the next chapter. This book is intended for college students in computer science and related fields, as well as professional software engineers, people training in software engineering, and people preparing for technical interviews. I assume that the reader knows Java at an intermediate level, but I explain some Java features along the way, and provide pointers to supplementary material. People who have read Think Java or Head First Java are prepared for this book.
Think Java is an introduction to Java programming for beginners. It is …
Think Java is an introduction to Java programming for beginners. It is tailored for students preparing for the Computer Science Advanced Placement (AP) Exam, but it is for anyone who wants to learn Java.
The goal of this book is to teach you to think like …
The goal of this book is to teach you to think like a computer scientist. This way of thinking combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.
Think Python is an introduction to Python programming for beginners. It starts …
Think Python is an introduction to Python programming for beginners. It starts with basic concepts of programming, and is carefully designed to define all terms when they are first used and to develop each new concept in a logical progression. Larger pieces, like recursion and object-oriented programming are divided into a sequence of smaller steps and introduced over the course of several chapters.
Think Stats is an introduction to Probability and Statistics for Python programmers. …
Think Stats is an introduction to Probability and Statistics for Python programmers.
*Think Stats emphasizes simple techniques you can use to explore real data sets and answer interesting questions. The book presents a case study using data from the National Institutes of Health. Readers are encouraged to work on a project with real datasets. *If you have basic skills in Python, you can use them to learn concepts in probability and statistics. Think Stats is based on a Python library for probability distributions (PMFs and CDFs). Many of the exercises use short programs to run experiments and help readers develop understanding.
This is a seminar based on research literature. Papers covered are selected …
This is a seminar based on research literature. Papers covered are selected to illustrate important problems and approaches in the field of computational and systems biology, and provide students a framework from which to evaluate new developments. The MIT Initiative in Computational and Systems Biology (CSBi) is a campus-wide research and education program that links biology, engineering, and computer science in a multidisciplinary approach to the systematic analysis and modeling of complex biological phenomena. This course is one of a series of core subjects offered through the CSB Ph.D. program, for students with an interest in interdisciplinary training and research in the area of computational and systems biology.
We will discuss numerous research problems that are related to the internet. …
We will discuss numerous research problems that are related to the internet. Sample topics include: routing algorithms such as BGP, communication protocols such as TCP, algorithms for intelligently selecting a resource in the face of uncertainty, bandwidth sensing tools, load balancing algorithms, streaming protocols, determining the structure of the internet, cost optimization, DNS-related problems, visualization, and large-scale data processing. The seminar is intended for students who are ready to work on challenging research problems. Each lecture will discuss: methods used today issues and problems formulation of concrete problems potential new lines of research A modest amount of background information will be provided so that the importance and context of the problems can be understood. No previous study of the internet is required, but experience with algorithms and/or theoretical computer science at the graduate/research level is needed.
The idea behind topological systems is simple: if there exists a quantity, …
The idea behind topological systems is simple: if there exists a quantity, which cannot change in an insulating system where all the particles are localized, then the system must become conducting and obtain propagating particles when the quantity (called a “topological invariant”) finally changes.
The practical applications of this principle are quite profound, and already within the last eight years they have lead to prediction and discovery of a vast range of new materials with exotic properties that were considered to be impossible before. What is the focus of this course?
Applications of topology in condensed matter based on bulk-edge correspondence. Special attention to the most active research topics in topological condensed matter: theory of topological insulators and Majorana fermions, topological classification of “grand ten” symmetry classes, and topological quantum computation Extensions of topology to further areas of condensed matter, such as photonic and mechanical systems, topological quantum walks, topology in fractionalized systems, driven or dissipative systems.
This text is a practical guide for linguists, and programmers, who work …
This text is a practical guide for linguists, and programmers, who work with data in multilingual computational environments. We introduce the basic concepts needed to understand how writing systems and character encodings function, and how they work together at the intersection between the Unicode Standard and the International Phonetic Alphabet. Although these standards are often met with frustration by users, they nevertheless provide language researchers and programmers with a consistent computational architecture needed to process, publish and analyze lexical data from the world's languages. Thus we bring to light common, but not always transparent, pitfalls which researchers face when working with Unicode and IPA. Having identified and overcome these pitfalls involved in making writing systems and character encodings syntactically and semantically interoperable (to the extent that they can be), we created a suite of open-source Python and R tools to work with languages using orthography profiles that describe author- or document-specific orthographic conventions. In this cookbook we describe a formal specification of orthography profiles and provide recipes using open source tools to show how users can segment text, analyze it, identify errors, and to transform it into different written forms for comparative linguistics research.
This resource provides a selected list of OERs on the topic of …
This resource provides a selected list of OERs on the topic of user experience, or UX, including design methodologies, human-computer interaction, interface design, and UX engineering.
This course examines human-computer interaction in the context of graphical user interfaces. …
This course examines human-computer interaction in the context of graphical user interfaces. The course covers human capabilities, design principles, prototyping techniques, evaluation techniques, and the implementation of graphical user interfaces. Deliverables include short programming assignments and a semester-long group project. Students taking the graduate version also have readings from current literature and additional assignments.
Scientific research and design is traditionally made to be published in books …
Scientific research and design is traditionally made to be published in books or magazines by use of text and images. The arrival of digital media and internet changed this dramatically and allowed new possibilities and far better accessibility of this work. Be this as it may, it is still paramount that the accuracy and completeness of published scientific work is maintained. This course will focus on this integrated concept, the learning of how to successfully make and publish your own website. In 6 lectures the several aspects of traditional scientific research will be treated by using the contemporary media. The course has the following study goals, that correspond with the given assignments and lectures: publishing own study and design work; making your work retrievable for others by use of key words; making use of digital media to describe own work; describing and evaluating of own work; making a bibliography and iconography; intrepretenting an image as a scientific document;describing in key words; compare images scientifically; deducting design types from image comparison; deducting design concepts from image comparison; deducting design models from image comparison; deducting design programs from image comparison; integrating different design concepts and becoming acquainted with research methods; defining an object of research, problem field, target field, design tools, own competence and context of research; formulating a site, context factors, motivation, design program, contribution, intended results and planning; justifying, referring and concluding of own work; giving and receiving professional critique.
No restrictions on your remixing, redistributing, or making derivative works. Give credit to the author, as required.
Your remixing, redistributing, or making derivatives works comes with some restrictions, including how it is shared.
Your redistributing comes with some restrictions. Do not remix or make derivative works.
Most restrictive license type. Prohibits most uses, sharing, and any changes.
Copyrighted materials, available under Fair Use and the TEACH Act for US-based educators, or other custom arrangements. Go to the resource provider to see their individual restrictions.