Foundations of Computation is a free textbook for a one-semester course in …
Foundations of Computation is a free textbook for a one-semester course in theoretical computer science. It has been used for several years in a course at Hobart and William Smith Colleges. The course has no prerequisites other than introductory computer programming. The first half of the course covers material on logic, sets, and functions that would often be taught in a course in discrete mathematics. The second part covers material on automata, formal languages, and grammar that would ordinarily be encountered in an upper level course in theoretical computer science.
Homework for the course "CS 217 – Probability and Statistics for Computer …
Homework for the course "CS 217 – Probability and Statistics for Computer Science" delivered at the City College of New York in Spring 2019 by Evan Agovino as part of the Tech-in-Residence Corps program.
Homework for the course "CS 217 – Probability and Statistics for Computer …
Homework for the course "CS 217 – Probability and Statistics for Computer Science" delivered at the City College of New York in Spring 2019 by Evan Agovino as part of the Tech-in-Residence Corps program.
Freebookcentre.net's computer science section contains links to many technical books offered free …
Freebookcentre.net's computer science section contains links to many technical books offered free online, either as html pages or downloadable pdfs. Books are arranged by subject: Data Structures and Algorithms, Compiler Design, Object Oriented Programming, Operating Systems, Computation Theory, Artificial Intelligence, and others.
This course provides the fundamental computational toolbox for solving science and engineering …
This course provides the fundamental computational toolbox for solving science and engineering problems. Topics include review of linear algebra, applications to networks, structures, estimation, finite difference and finite element solutions of differential equations, Laplace’s equation and potential flow, boundary-value problems, Fourier series, the discrete Fourier transform, and convolution. We will also explore many topics in AI and machine learning throughout the course.
Today we’re going to look at how our computers read and interpret …
Today we’re going to look at how our computers read and interpret computer files. We’ll talk about how some popular file formats like txt, wave, and bitmap are encoded and decoded giving us pretty pictures and lifelike recordings from just strings of 1’s and 0’s, and we’ll discuss how our computers are able to keep all this data organized and readily accessible to users. You’ll notice in this episode that we’re starting to talk more about computer users, not programmers, foreshadowing where the series will be going in a few episodes.
So now that we’ve built and programmed our very own CPU, we’re …
So now that we’ve built and programmed our very own CPU, we’re going to take a step back and look at how CPU speeds have rapidly increased from just a few cycles per second to gigahertz! Some of that improvement, of course, has come from faster and more efficient transistors, but a number hardware designs have been implemented to boost performance. And you’ve probably heard or read about a lot of these - they’re the buzz words attached to just about every new CPU release - terms like instruction pipelining, cache, FLOPS, superscalar, branch prediction, multi-core processors, and even super computers! These designs are pretty complicated, but the fundamental concepts behind them are not. So bear with us as we introduce a lot of new terminology including what might just be the best computer science term of all time: the dirty bit. Let us explain.
So as you may have noticed from last episode, computers keep getting …
So as you may have noticed from last episode, computers keep getting faster and faster, and by the start of the 1950s they had gotten so fast that it often took longer to manually load programs via punch cards than to actually run them! The solution was the operating system (or OS), which is just a program with special privileges that allows it to run and manage other programs. So today, we’re going to trace the development of operating systems from the Multics and Atlas Supervisor to Unix and MS-DOS, and take at look at how these systems heavily influenced popular OSes like Linux, Windows, MacOS, and Android that we use today.
Since Joseph Marie Jacquard’s textile loom in 1801, there has been a …
Since Joseph Marie Jacquard’s textile loom in 1801, there has been a demonstrated need to give our machines instructions. In the last few episodes, our instructions were already in our computer’s memory, but we need to talk about how they got there - this is the heart of programming. Today, we’re going to look at the history of programming and the innovations that brought us from punch cards and punch paper tape to plugboards and consoles of switches. These technologies will bring us to the mid 1970s and the start of home computing, but they had limitations, and what was really needed was an easier and more accessible way to write programs - programming languages. Which we’ll get to next week.
So we ended last episode with programming at the hardware level with …
So we ended last episode with programming at the hardware level with things like plugboards and huge panels of switches, but what was really needed was a more versatile way to program computers - software! For much of this series we’ve been talking about machine code, or the 1’s and 0’s our computers read to perform operations, but giving our computers instructions in 1’s and 0’s is incredibly inefficient, and a “higher-level” language was needed. This led to the development of assembly code and assemblers that allow us to use operands and mnemonics to more easily write programs, but assembly language is still tied to underlying hardware. So by 1952 Navy officer Grace Hopper had helped created the first high-level programming language A-0 and compiler to translate that code to our machines. This would eventually lead to IBM’s Fortran and then a golden age of computing languages over the coming decades. Most importantly, these new languages utilized new abstractions to make programming easier and more powerful giving more and more people the ability to create new and amazing things.
Today we’re going to talk about how computers understand speech and speak …
Today we’re going to talk about how computers understand speech and speak themselves. As computers play an increasing role in our daily lives there has been an growing demand for voice user interfaces, but speech is also terribly complicated. Vocabularies are diverse, sentence structures can often dictate the meaning of certain words, and computers also have to deal with accents, mispronunciations, and many common linguistic faux pas. The field of Natural Language Processing, or NLP, attempts to solve these problems, with a number of techniques we’ll discuss today. And even though our virtual assistants like Siri, Alexa, Google Home, Bixby, and Cortana have come a long way from the first speech processing and synthesis models, there is still much room for improvement.
Lecture for the course "CS 217 – Probability and Statistics for Computer …
Lecture for the course "CS 217 – Probability and Statistics for Computer Science" delivered at the City College of New York in Spring 2019 by Evan Agovino as part of the Tech-in-Residence Corps program.
Homework for the course "CS 217 – Probability and Statistics for Computer …
Homework for the course "CS 217 – Probability and Statistics for Computer Science" delivered at the City College of New York in Spring 2019 by Evan Agovino as part of the Tech-in-Residence Corps program.
Computability Theory deals with one of the most fundamental questions in computer …
Computability Theory deals with one of the most fundamental questions in computer science: What is computing and what are the limits of what a computer can compute? Or, formulated differently: "What kind of problems can be algorithmically solved?" During the course this question will be studied. Firstly, the notion of algorithm or computing will be made precise by using the mathematical model of a Turing machine. Secondly, it will be shown that basic issues in computer science, like "Given a program P does it halt for any input x?" or "Given two program P and Q, are they equivalent?" cannot be solved by any Turing machine. This shows that there exist problems that are impossible to solve with a computer, the so-called "undecidable problems".
Homework for the course "CS 217 – Probability and Statistics for Computer …
Homework for the course "CS 217 – Probability and Statistics for Computer Science" delivered at the City College of New York in Spring 2019 by Evan Agovino as part of the Tech-in-Residence Corps program.
So we’ve talked about computer memory a couple times in this series, …
So we’ve talked about computer memory a couple times in this series, but what we haven’t talked about is storage. Data written to storage, like your hard drive, is a little different, because it will still be there even if the power goes out - this is known as non-volatile memory. Today we’re going to trace the history of these storage technologies from punch cards, delay line memory, core memory, magnetic tape, and magnetic drums, to floppy disks, hard disk drives, cds, and solid state drives. Initially, volatile memory, like RAM was much faster than these non-volatile storage memories, but that distinction is becoming less and less true today.
CORRECTION: AT we say "around 9 kilobytes" when we should have said "kilobits".
Today we're going to talk about robots! Robots are often thought as …
Today we're going to talk about robots! Robots are often thought as a technology of the future, but they're already here by the millions in the workplace, our homes, and pretty soon on the roads. We'll discuss the origins of robotics to its proliferation, and even look at some common control designs that were implemented to make them more useful in the workplace. Robots are often thought of as a menace or danger to society, and although there definitely is the propensity for malicious uses, robots also have the potential to drastically improve the world.
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.