# Courses tagged with "Computer Science" (52)

This course will introduce you to the field of computer science and the fundamentals of computer programming. Introduction to Computer Science I is specifically designed for students with no prior programming experience, and taking this course does not require a background in Computer Science. This course will touch upon a variety of fundamental topics within the field of Computer Science and will use Java, a high-level, portable, and well-constructed computer programming language developed by Sun Microsystems (now Oracle), to demonstrate those principles. We will begin with an overview of the course topics as well as a brief history of software development. We will cover basic object-oriented programming terminology and concepts such as objects, classes, inheritance, and polymorphism, as well as the fundamentals of Java, its primitive data types, relational operators, control statements, exception handling, and file input /output. By the end of the course, you should have a strong understanding of the fundam…

This course is a continuation of the first-semester course titled CS101: Introduction to Computer Science I [1]. It will introduce you to a number of more advanced Computer Science topics, laying a strong foundation for future academic study in the discipline. We will begin with a comparison between Java - the programming language utilized last semester - and C++, another popular, industry-standard programming language. We will then discuss the fundamental building blocks of Object-Oriented Programming, reviewing what we learned last semester and familiarizing ourselves with some more advanced programming concepts. The remaining course units will be devoted to various advanced topics, including the Standard Template Library, Exceptions, Recursion, Searching and Sorting, and Template Classes. By the end of the class, you will have a solid understanding of Java and C++ programming, as well as a familiarity with the major issues that programmers routinely address in a professional setting. [1] http://www.saylor.

This course is designed to introduce you to the study of Calculus. You will learn concrete applications of how calculus is used and, more importantly, why it works. Calculus is not a new discipline; it has been around since the days of Archimedes. However, Isaac Newton and Gottfried Leibniz, two 17th-century European mathematicians concurrently working on the same intellectual discovery hundreds of miles apart, were responsible for developing the field as we know it today. This brings us to our first question, what is today's Calculus? In its simplest terms, calculus is the study of functions, rates of change, and continuity. While you may have cultivated a basic understanding of functions in previous math courses, in this course you will come to a more advanced understanding of their complexity, learning to take a closer look at their behaviors and nuances. In this course, we will address three major topics: limits, derivatives, and integrals, as well as study their respective foundations and a…

This course is the second installment of Single-Variable Calculus. In Part I (MA101) [1], we studied limits, derivatives, and basic integrals as a means to understand the behavior of functions. In this course (Part II), we will extend our differentiation and integration abilities and apply the techniques we have learned. Additional integration techniques, in particular, are a major part of the course. In Part I, we learned how to integrate by various formulas and by reversing the chain rule through the technique of substitution. In Part II, we will learn some clever uses of substitution, how to reverse the product rule for differentiation through a technique called integration by parts, and how to rewrite trigonometric and rational integrands that look impossible into simpler forms. Series, while a major topic in their own right, also serve to extend our integration reach: they culminate in an application that lets you integrate almost any function you’d like. Integration allows us to calculat…

This course is an introduction to linear algebra. It has been argued that linear algebra constitutes half of all mathematics. Whether or not everyone would agree with that, it is certainly true that practically every modern technology relies on linear algebra to simplify the computations required for Internet searches, 3-D animation, coordination of safety systems, financial trading, air traffic control, and everything in between. Linear algebra can be viewed either as the study of linear equations or as the study of vectors. It is tied to analytic geometry; practically speaking, this means that almost every fact you will learn in this course has a picture associated with it. Learning to connect the facts with their geometric interpretation will be very useful for you. The book which is used in the course focuses both on the theoretical aspects as well as the applied aspects of linear algebra. As a result, you will be able to learn the geometric interpretations of many of the algebraic concepts…

In this course, you will look at the properties behind the basic concepts of probability and statistics and focus on applications of statistical knowledge. You will learn about how statistics and probability work together. The subject of statistics involves the study of methods for collecting, summarizing, and interpreting data. Statistics formalizes the process of making decisions, and this course is designed to help you use statistical literacy to make better decisions. Note that this course has applications for the natural sciences, economics, computer science, finance, psychology, sociology, criminology, and many other fields. We read data in articles and reports every day. After finishing this course, you should be comfortable evaluating an author's use of data. You will be able to extract information from articles and display that information effectively. You will also be able to understand the basics of how to draw statistical conclusions. This course will begin with descriptive statistic…

In the first unit, we will learn the mechanics of editing and compiling a simple program written in C++. We will begin with a discussion of the essential elements of C++ programming: variables, loops, expressions, functions, and string class. Next, we will cover the basics of object-oriented programming: classes, inheritance, templates, exceptions, and file manipulation. We 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, we will learn some slightly more sophisticated programming techniques that deal with data structures such as linked lists and binary trees. This course contains a number of sample programs and review exercises. Through these exercises, students should better learn how to write functions, use the string class, and write elementary data structures such as linked lists and bina…

When we use programming for problem-solving purposes, data must be stored in certain forms, or Data Structures, so that operations on that data will yield a specific type of output. Imagine, for example, that a non-profit is having trouble staying afloat and needs an increase in donation. It decides it wants to keep track of its donors in a program in order to figure out who is contributing and why. You would first need to define the properties that would define those donors: name, address, amount donated, date of donation, and so on. Then, when the non-profit wants to determine how to best reach out to their donors, it can create a model of the average donor that contributes to the non-profitsay, for example, based on size of gift and locationso that it can better determine who is most receptive to its mission. In this case, size of gift and location are the “data” of the donor model. If the non-profit were to use this model, it would be identifying real donors by first generating an abstract…

This course has been designed to provide you with a clear, accessible introduction to discrete mathematics. Discrete mathematics describes processes that consist of a sequence of individual steps (as compared to calculus, which describes processes that change in a continuous manner). The principal topics presented in this course are logic and proof, induction and recursion, discrete probability, and finite state machines. As you progress through the units of this course, you will develop the mathematical foundations necessary for more specialized subjects in computer science, including data structures, algorithms, and compiler design. Upon completion of this course, you will have the mathematical know-how required for an in-depth study of the science and technology of the computer age.

Modern computer technology requires an understanding of both hardware and software, as the interaction between the two offers a framework for mastering the fundamentals of computing. 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. In this course, you will study the history of modern computing technology before learning about modern computer architecture and a number of its important features, including instruction sets, processor arithmetic and control, the Von Neumann architecture, pipelining, memory management, storage, and other input/output topics. The course will conclude with a look at the recent switch from sequential processing to parallel processing by looking at the parallel computing models and their programming implications.

Software engineering is a discipline that allows us to apply engineering and computer science concepts in the development and maintenance of reliable, usable, and dependable software. The concept of software engineering was first discussed at the 1968 NATO Science Committee in Germany. Today, many practitioners still debate over the term software engineering, often arguing that this discipline does not meet the criteria of engineering; rather, it should be called software development. There are several areas to focus on within software engineering, such as design, development, testing, maintenance, and management. Software development outside of the classroom is a very complex process, mostly because real-world software is much larger and more complex. The purpose of this course is to present software engineering as a body of knowledge. The course is designed to present software engineering concepts and principles in parallel with the software development life cycle. The course will begin with an introducti…