# Introduction to Computer Science
## Introduction

Dear student,
You are starting to learn about computation and its purpose. This course covers the same materials as an introductory class for undergraduate computer science majors. Its curriculum, which includes software, hardware and algorithms, resembles that of a one- or two-semester first-year college course or the high school Advanced Placement (AP) Computer Science. It does not require a formal computer science background.
There is also a gentler Introduction to Computers for non-majors, and a basic course focusing on programming that is taught in several computer languages.
The rewards of taking this course are immense. In addition to being a subject in itself, computer science can be applied to almost any other discipline from accounting to zoology. The job prospects for computer scientists and computer engineers are excellent.
Be patient in your studies, and don't get too frustrated if you are stuck on one part of a programming assignment or confused about a concept. Struggling with the materials is a normal and essential part of the learning process. You're probably better off going through the course sequentially and consulting external references as needed. Each lesson, particularly in the programming component of the course, builds on previous sections and it is best to keep up with the materials throughout. You're welcome to go at your own pace and begin or end at any time.
Completing the reading and programming assignments for one section can take awhile. If you would like feedback, the instructors are here to help.

## Prerequisites

Prerequisites are courses that are suggested you understand before you attempt this course. If you're having a hard time understanding the material in this course, make sure you understand these prerequisites first.
* Introduction to Computers

## Corequisites

Computer science is a discipline - also can be described as a branch of knowledge; where abstraction (the process of dealing with ideas rather than events) is of much concern.

## Lessons

Introduction to Computer Science
* History of Computing
* Introduction to Turing Machines
* Number Systems
* Basics of Computer Architecture
** What is a CPU?
** What is a motherboard?
* Internet
* Personal Computers
* What is an Algorithm
* How To Implement a Problem Solution as a Program
* Development Environment and Language Principles
* Types and Variables
* Operators and Expressions
* Control Structures
* Procedures and Functions
* Arrays, Strings and Records
* Basic I/O
    Despite the best efforts of the authors, the material in this course is imperfect. If you have a question or otherwise need help with this course, please post on the Help Page.

## Next Course

* Introduction to Programming

## Related Wikiversity resources

* Introduction to Computers – Beginners guide to computing.
* Introduction to Information Technology – needs work. Will you help out?
* IT Fundamentals

## Related Links
### Academic and other organizations

* Association for Computing Machinery (ACM)
* Computing Research Association (CRA)
* Institute of Electrical and Electronics Engineers (IEEE)
* The Internet Society (ISOC), an international organization which manages the Internet

### Advice

* How to Become a Computer Scientist
* Advice for Computer Science College Students

### Other E-books

* Java Programming (Wikibooks)
* Introduction to Programming Using Java (Creative Commons licensed)
* Thinking in Java
* The Java Tutorials from Sun
* Java Expert Solutions (published in 1997)
* Computer Histories - An introductory course on the history of computing

### Similar courses at other institutions

* MIT's. Classes in a variety of subjects are available for free at the school's Open CourseWare website.
* Princeton University's course in introductory computer science, complete with lecture slides, assignments and an online textbook.
* Harvard University's Introduction to Computer Science I (video lectures).
* Saylor: CS101: Introduction to Computer Science I