The Student Room Group

Good books about CS?

I want titles of some good books on computer science at a beginner level for me to read during my study for IGCSEs and A Levels so that I can have a really good background of what I'll be studying at uni.

I'm a complete beginner, although I've read some things about programming, but I want to start from the basics of computer science.

If there are any articles/lectures/whatever helpful I would welcome them also.

I would like to reach to the level of first term and/or first year of university, if possible. I have at least 3 years before I enter university, is this possible?

I'm also doing CIE's IGCSE Computer Studies, and because I'm self-studying I'm still waiting for CIE to publish their own book specially designed for the syllabus, which will be coming out in July of this year. I also expect to do CIE's A Level Computing later on.

I've attached a copy of the IGCSE syllabus file, if anybody would take a look at it and recommend some books for the topics listed I would be grateful.

Thanks,
Bouchra

Scroll to see replies

Reply 1
That spec looks like Software Engineering more than Computer Science (unlike some other GCSE/A-level courses). At this level it's mostly horse manure except for a few bright spots with logic and asymptotic analysis.

Suggestion: Buy a Cambridge-approved textbook for the course and download Haskell + buy Cormen's Introduction to Algorithms for your own study.
(edited 12 years ago)
Reply 2
Original post by roblee
That spec looks like Software Engineering more than Computer Science (unlike some other GCSE/A-level courses). At this level it's mostly horse manure except for a few bright spots with logic and asymptotic analysis.

Suggestion: Buy a Cambridge-approved textbook for the course and download Haskell + buy Cormen's Introduction to Algorithms for your own study.


I actually wanted to do ICT, but here it's not available for private candidates, that's why I chose Computer Studies.

Is this what you mean by Haskell?

And this is the book, right?

Thanks for the suggestions.
Reply 3
Original post by Bouchra
I actually wanted to do ICT, but here it's not available for private candidates, that's why I chose Computer Studies.

Is this what you mean by Haskell?

And this is the book, right?

Thanks for the suggestions.

Correct both times. I can see that you're a formidable Googler :colone:

Example (inefficient) program to get up and running:

main = print results
where
results = fibonacci series
where
series = [1 .. 10]

fib 0 = 0
fib 1 = 1
fib n = (fib (n-1)) + (fib (n-2))

fibonacci [ ] = []
fibonacci (a:b) = (fib a):frown:fibonacci b)
(edited 12 years ago)
Reply 4
Original post by roblee
Correct both times. I can see that you're a formidable Googler :colone:

Example (inefficient) program to get up and running:

main = print results
where
results = fibonacci series
where
series = [1 .. 10]

fib 0 = 0
fib 1 = 1
fib n = (fib (n-1)) + (fib (n-2))

fibonacci [ ] = []
fibonacci (a:b) = (fib a):frown:fibonacci b)


Lol, thanks.

Does this Haskell thing come with some introduction or something? It does look quite difficult to me. Are you sure this stuff is for beginners? Because the only programming languages I've been exposed to so far are HTML and CSS, by the help of Firefox's amazing add-on, Firebug.
Reply 5
Original post by Bouchra
Lol, thanks.

Does this Haskell thing come with some introduction or something? It does look quite difficult to me. Are you sure this stuff is for beginners? Because the only programming languages I've been exposed to so far are HTML and CSS, by the help of Firefox's amazing add-on, Firebug.

If Haskell looks too complicated for the moment, possibly consider doing some Java with Eclipse. Its structure is similar to Javascript.
(edited 12 years ago)
Reply 6
Original post by roblee
If Haskell looks too complicated for the moment, possibly consider doing some Java with Eclipse. Its structure is similar to Javascript.


What about C or C++? Aren't they good for beginners?

What other things I can do to help me prepare for uni from now?

I hope I'm not bothering you with my questions.
Reply 7
Original post by Bouchra
What about C or C++? Aren't they good for beginners?

What other things I can do to help me prepare for uni from now?

I hope I'm not bothering you with my questions.

It's almost always worth answering questions.

Yes, C++ is good too (similar to Java). Code::Blocks is the tool for that. Learning to program in at least language and reading that book plus anything else that seems interesting (online or onprint) is ample preparation for university.

#include <cstdio> //C standard input output tools

int main()
{
int num; //"num" is an integer

for (num=1; num<=10; ++num) //start "num" at 1 and increase it (1<=num<=10)
{
printf("%d\n",num); //for each value write num in %decimal and go to a \new line
}
}
(edited 12 years ago)
Reply 8
Original post by roblee
It's almost always worth answering questions.

Yes, C++ is good too (similar to Java). Code::Blocks is the tool for that. Learning to program in at least language and reading that book plus anything else that seems interesting (online or onprint) is ample preparation for university.

#include <cstdio> //C standard input output tools

int main()
{
int num; //"num" is an integer

for (num=1; num<=10; ++num) //start "num" at 1 and increase it (1<=num<=10)
{
printf("%d\n",num); //for each value write num in %decimal and go to a \new line
}
}


I'm afraid I didn't understand what you meant by that. (I mean the bold bit)

So you suggest that I learn one of (Java/C++/Haskell) as preparation for uni, right?

Is it worth it reading any of the books in the general reading list for CS from unis such as Oxford and Cambridge, even if I may not end up studying there?
Reply 9
Original post by Bouchra
I'm afraid I didn't understand what you meant by that. (I mean the bold bit)

So you suggest that I learn one of (Java/C++/Haskell) as preparation for uni, right?

Is it worth it reading any of the books in the general reading list for CS from unis such as Oxford and Cambridge, even if I may not end up studying there?

Sorry, Code::Blocks is an IDE (Integrated Development Environment, fancy code editor) for C++ just like Eclipse is for Java. It's available here (you'll want the one with a compiler included).

That's a perfectly good strategy, although I'll warn you that Cambridge's reading list is somewhat archaic (avoid "Computer Science: A Modern Introduction").

There are some tutorials on C++ at http://www.cprogramming.com/tutorial.html
Reply 10
Don't worry about not being able to do ICT, biggest waste of a subject ever and I SEVERELY regret taking it in place of physics, it has that little to do with computer science. I'll be lucky to scrape a B in it due to my lack of motivation in the coursework section which was just so ridiculous.

Good luck with the programming!
Reply 11
Original post by roblee
Sorry, Code::Blocks is an IDE (Integrated Development Environment, fancy code editor) for C++ just like Eclipse is for Java. It's available here (you'll want the one with a compiler included).

That's a perfectly good strategy, although I'll warn you that Cambridge's reading list is somewhat archaic (avoid "Computer Science: A Modern Introduction").

There are some tutorials on C++ at http://www.cprogramming.com/tutorial.html


Thanks a lot for the tips and links.
Reply 12
Original post by JackWoot
Don't worry about not being able to do ICT, biggest waste of a subject ever and I SEVERELY regret taking it in place of physics, it has that little to do with computer science. I'll be lucky to scrape a B in it due to my lack of motivation in the coursework section which was just so ridiculous.

Good luck with the programming!


I certainly am not going to take neither ICT nor Computer Studies in place of Physics! I know it's a requirement in some unis for Computer Science, and it's recommended by the others that do not require it, so I'll be doing it no matter what.

Why I regret not being able to do ICT is that CIE's spec is nice and it looks quite easy too, that is why I was looking forward to doing it.

Good luck with your ICT :smile:
Reply 13
Original post by roblee
That spec looks like Software Engineering more than Computer Science (unlike some other GCSE/A-level courses). At this level it's mostly horse manure except for a few bright spots with logic and asymptotic analysis.

Suggestion: Buy a Cambridge-approved textbook for the course and download Haskell + buy Cormen's Introduction to Algorithms for your own study.


Do you really think Haskell is a good first language to learn? I wouldn't even worry with algorithms either at this point, well not to the extend in which you require a book for it. She should start writing code, it doesn't have to be as efficient as possible; that can be learnt later.

I believe learning Python or something similar will serve you well for now. Once you get some programming knowledge behind you then branch out to more complicated languages and topics.
Reply 14
Original post by Sly-.-
Do you really think Haskell is a good first language to learn? I wouldn't even worry with algorithms either at this point, well not to the extend in which you require a book for it. She should start writing code, it doesn't have to be as efficient as possible; that can be learnt later.

I believe learning Python or something similar will serve you well for now. Once you get some programming knowledge behind you then branch out to more complicated languages and topics.

One of the biggest turn-offs that I see for new programmers is that their toil is without point (e.g. who wants a times-table printer?); as Haskell is at first glance just a neat way of writing out recurrence relations even a beginner can do pretty fancy stuff without knowing much about the language (quicksort is about 4 lines long, compared to about 30 in C++ and 40 in Python).

Anyway, I think the OP settled on Java/C++ a while back so it's all a bit pointless now.
Original post by Bouchra

Original post by Bouchra
I want titles of some good books on computer science at a beginner level for me to read during my study for IGCSEs and A Levels so that I can have a really good background of what I'll be studying at uni.


I would recommend: "The Pattern on the Stone: The Simple Ideas That Make Computers Work" by Daniel Hillis. ISBN: 978-0465025961

It's on the Oxford background reading list but unlike some of the other books on there it's written in everyday language, and it's also not too long (which means it's cheap to buy a copy!)
Original post by roblee
One of the biggest turn-offs that I see for new programmers is that their toil is without point (e.g. who wants a times-table printer?);


What programs would you want new programmers to be writing? (I have an ulterior motive in my question: I am trying to write an introductory programming book, aimed as getting more people interested in programming, and hence in Computer Science.) There is quite a lot that needs to be explained before you can get onto fun programs -- regardless of the language.

Original post by roblee

as Haskell is at first glance just a neat way of writing out recurrence relations even a beginner can do pretty fancy stuff without knowing much about the language


I'm a big fan of Haskell. However, my experience is that most people find it harder than imperative languages.

Original post by roblee

(quicksort is about 4 lines long, compared to about 30 in C++ and 40 in Python).


The version of quicksort I've got here, using Scala, is under 20 lines. I can believe it's longer in C++ and Python, though -- but I wouldn't want to program in those languages. :smile:
Reply 17
Original post by gavinlowe
What programs would you want new programmers to be writing? (I have an ulterior motive in my question: I am trying to write an introductory programming book, aimed as getting more people interested in programming, and hence in Computer Science.) There is quite a lot that needs to be explained before you can get onto fun programs -- regardless of the language.

Embarrassingly, my first language was AMSTRAD BASIC followed by Blitz3D- both very easy to do glitzy graphics in (got as far as stencil shadows with Blitz before realizing how lame the language is :biggrin:)

I've found classical physics to be a good learning device- you start by giving someone a program to draw a ball particle moving across the screen, and build up by showing them how to make the particle bounce elastically against the border, then add gravity, then make it bounce around inside a bigger circle, then make it a rectangle instead etc. At that point the geometric algorithms like point-in-polygon and separating planes come into play, with each stage growing naturally from the last. Not a clue how that would work in book form.

But that's imperative programming, which doesn't really seem like 'computer science' to me. Maybe my definitions are a bit hazy. I've never taught anyone using functional languages but if I did I'd probably start with the sorting algorithms then do something involving graph-theory instead...

Nottingham University's approach seems to work quite well on their undergrads: Event-driven "programming" in a Scratch-like environment, which is then gradually translated to something closer-to-metal. That way students knew about the basics of variables and machine state and didn't have to learn it at the same time as language syntax.
The version of quicksort I've got here, using Scala, is under 20 lines. I can believe it's longer in C++ and Python, though -- but I wouldn't want to program in those languages. :smile:
I think ASM loses the length-contest here:

Spoiler



EDIT: Wait, you're a CS admissions tutor? :shock:
(edited 12 years ago)
Reply 18
Original post by gavinlowe
What programs would you want new programmers to be writing? (I have an ulterior motive in my question: I am trying to write an introductory programming book, aimed as getting more people interested in programming, and hence in Computer Science.) There is quite a lot that needs to be explained before you can get onto fun programs -- regardless of the language.



I'm a big fan of Haskell. However, my experience is that most people find it harder than imperative languages.



The version of quicksort I've got here, using Scala, is under 20 lines. I can believe it's longer in C++ and Python, though -- but I wouldn't want to program in those languages. :smile:


:eek: you teach Computer Science?
Reply 19
Ooh I thought you meant Counter Strike :colondollar:

Quick Reply

Latest

Trending

Trending