
Computer Science I [pdf] - lainon
http://cse.unl.edu/~cbourke/ComputerScienceOne.pdf
======
johannsg
I only scanned it, and it seems like a solid book; however, I found that PHP
is an odd choice for CompSci I book. From the book:

> PHP is a dirty, ugly language held together by duct tape, cracked asbestos-
> filled spackle and sadness
> ([http://phpsadness.com/](http://phpsadness.com/)). It is the cockroach of
> languages: it is invasive and it is a survivor. It is a hydra; rewrite one
> PHP app and two more pop up. It is much maligned and a source of ridicule.
> It is the source of hundreds of bad practices, thousands of bad programmers,
> millions of bugs and an infinite abyss of security holes and
> vulnerabilities. It is a language that was born in the wild and raised in
> the darkness by two schizophrenic monkeys. But its got character; and in
> this world, that’s enough.

~~~
gervase
Although I agree that PHP is an odd choice, I do think there's something to be
said for teaching computer science with a language that the students
(probably) won't end up using professionally. In some sense, this permits a
decoupling of the language ergonomics from the underlying principles, thereby
emphasizing 'learning' over 'training'.[0]

The very first language I was ever formally taught was Lisp. I haven't used it
even one time since then, but it forced me to understand recursion at a
cellular level, which has painlessly translated to every language I've used
since then.

There's a significant distinction between "I understand how
[inheritance|recursion|functional programming|etc] works in <language of
choice>." and "I understand how [inheritance|recursion|functional
programming|etc] works, period."

By choosing a non-mainstream language, I suspect that it makes it slightly
more likely to end up in the second category than the first.

[0] Note that this applies only to formal computer science training, NOT
developer bootcamps, where the end goals are totally different.

~~~
simula67
I think the first language people cut their teeth with will be the language
they use to reason about new problems. So it helps for it to be close to the
language they will eventually end up using, unless you want to waste a lot of
time translating the solution you have in your mind to the language you are
required to program in

~~~
groovy2shoes
There's no way this is true. I cut my teeth on Microsoft QuickBasic, and I
promise you that QuickBasic has been far from my mind for many years. At this
point, I've written programs in about 50 different languages (not all of them
professionally): procedural, object-oriented, applicative, concatenative,
relational; different paradigms require different "modes of reasoning" to
properly wield.

To extend your translation analogy, it's rather like learning a natural
language in that at first you might think in your native tongue and translate
on-the-fly, but to become fluent you must really internalize the new language
and learn to "switch" your thoughts into it. I feel like the linguistic
concepts of "registers" and "code switching" apply well to formal languages as
well as natural ones.

------
utopcell
I have no opinion about the quality of this book, but just by looking at the
contents, it has almost nothing to do with computer science. It doesn't deal
with computing models, theory, algorithms, automata, or anything you'd expect
an introductory book to cover. This is a book about (specific) programming
languages.

------
spraak
Is there a service that can print out these massive PDFs into a bound copy? I
spend enough time on screens for work that I really prefer a book for learning
material.

~~~
TheSoftwareGuy
Yes, plenty. Kinkos is one, I believe

~~~
groovy2shoes
Kinkos is called "FedEx Office" these days (last I checked), but indeed they
can do this. So can Staples, Office Depot, OfficeMax, etc.

~~~
Terretta
They can get fussy about proof of permission.

------
echo419
As someone who's new to CS, I love this resource, and while I've been coding
for about a year now I've come across most of these topics, but as someone who
wants to go deeper into CS, what topics would you all expect to see in a
Computer Science II book?

~~~
flor1s
I didn't read the book, just the TOC, but it seems like this book is only
about programming, not so much about theory (automata, discrete math,
calculus, linear algebra, etc), and not even so much about the engineering
side of it (automated testing, algorithms, DevOps, etc).

Anyway, there are various websites which list an "online curriculum" for
Computer Science, e.g. [https://mindweb.network/board/computer-science-a-full-
bachel...](https://mindweb.network/board/computer-science-a-full-bachelor-
curriculum)

------
jaxkxxxxxxxxxx
C -> ok, Java -> ok, PHP -> WTF! This odd choice undermines the overall rating
of the book.

