Вы находитесь на странице: 1из 4

Suggestions for Practical Computer Science

November 12, 2012

1
1.1

Python
Learn Python The Hard Way

For a concise introduction to programming in Python, the student begins with Learn Python The Hard Way by Zed A. Shaw, which contains 52 short chapters, each in the form of an exercise, covering the basics of coding. By its completion, our the student will have understood: Data types (e.g. strings and integers) Functions and variables Boolean logic Loops Elementary data structures (e.g. lists and dictionaries) Object-Oriented programming concepts (e.g. inheritance) The second half of the book provides ample practice which includes a web program and a game. The book is both well-known (and as such has its exercises mentioned in various forums and question-answer sites) and freely available online.

1.2

An Introduction to Computer Science

For a more technical and detailed introduction to computer science, Python Programming: An Introduction to Computer Science by John M. Zelle may be used, albeit as an alternative to the previously mentioned title.

1.3

Practice

For the student to become comfortable with expressing instructions in code, a collection of short projects is suggested for practice. These include detailed assignment overviews and sample input/outputs.

1.4

PyGame

Using what the student has learned so far, she may now implement a larger project of the game kind, and to this end Invent With Python, which is freely available online, serves as a step-by-step guide to exploit the power of PyGame for the creation of games, which may include graphics beyond the text-based.

2
2.1

Java
Data Structures

A transition to C-syntax languages, data structures will be studies in Java, arguably the bridge between Python (and other high level languages) and the lower lever, C-derived languages. For this purpose, the student will complete a selection of labs and assignments, utilizing both Java as a language, and an understanding of elementary data structures; as supplementary material, which should be used to base solution upon, Data Structures & Algorithms In Java will be used. It is important to note that the purpose of this project is to become comfortable with Java, and data structures are simply clear means by which that can be achieved.

2.2

Android Development

To provide the student with substantial experience with Java programming, Android application development is undertaken. Given the ubiquity of Android tutorials, it is not surprising to have freely available a source so comprehensive and friendly as Learn Android Development From Scratch!. To ensure the student uses intelligent development patterns, Androids Best Practices is suggested as a source upon which to base her implementations.

3
3.1

C
The Language

The knowledge which the student has hitherto accumulated provides her with a mere glimpse into computer programming. While higher level languages provide secure and often nimble development tools, and thus may be preferable for most projects, skill and control may most easily be derived by exercising the power of C. The technical nature of C does not disallow fun and games; in fact, the book suggested as the main reading is The C Puzzle Book. It is only as a supplementary text that the classic C Programming Language is suggested. Assignments and projects are additional means by which to get the students hands dirty.

3.2

Unix and Networking

As a large project, an instant-messaging tool in C can be developed. This will require an understanding of networking in the unix environment, which is amply supplied by the freely available (and recently updated) Beejs Guide to Network Programming.

4
4.1

C++
Concurrency

We move to write concurrent programs with the C++ programming language. Peter A. Buhrs Concurrency in C++ will be used; corresponding assignments are available from here.

5
5.1

Functional Programming
Scala
A Scala Tutorial For Java Programmers Scala Actors: A Short Tutorial (Scala and concurrency) Programming in Scala (written by Scalas co-creator)

5.2

Haskell

Learn You a Haskell for Great Good! Write Yourself a Scheme in 48 Hours (we build a Scheme interpreter in Haskell)

Вам также может понравиться