Showing posts with label Book-Recommended. Show all posts
Showing posts with label Book-Recommended. Show all posts

2012-01-02

Learning Java for first time programmers

I'm designing a course for first time programmers to learn Java.  Here are some useful resources I found that I like:

Interactive Tutorials
  1. Introduction to Computer Science using Java (Bradley Kjell)

Lecture Notes
  1. Introduction to Programming in Java (MIT OCW)

Textbooks
  1. Think Java: How to Think Like a Computer Scientist (Allen B. Downey) - suitable for AP Computer Science, so suitable for younger students
  2. Introduction to Programming Using Java, Sixth Edition (David J. Eck) - link not working for me right now but I've heard good things about it
  3. Introduction to Programming in Java (Robert Sedgewick, Kevin Wayne) - contains case studies connected to real scientific or business uses, but means requires students to have a more advanced math background more suitable for 2nd+ year university undergrad students.
  4. AP Computer Science A (Dec 31 2019 edition)  (Roselyn Teukolsky) - fantastic study and review book for Java, especially for studying for the College Board AP Computer Science A exam.  I've used this book in its various yearly editions before and can say this book is really good.

2012-01-01

Web Mobile App Development Tools and Libraries

Here's some tools and libraries that look interesting for web development, mobile App development, etc.

To begin, Firefox and Chrome, of course, are the browsers of choice for a web developer.

Tools for Firefox

Firefox has tons of tools for web developers! Take special note of:
  1. Firebug,
  2. Console²,
  3. DOM Inspector,
  4. FoxGuide,
  5. HTML Validator,
  6. JSView,
  7. LiveReload,
  8. PageSpeed,
  9. Phoenix,
  10. SQLite Manager,
  11. Web Developer.
  12. ColorZilla

If using Firebug, then also take special note of Acebug, FireRainbow.

Tools for Chrome

Chrome is younger and has less tools, but many web developers prefer Chrome over Firefox.  And there are definitely tools:
  1. Google Chrome Developer Tools
  2. Web Developer
  3. Firebug Lite
  4. Validity
  5. ColorZilla 
  6. Color Generator
  7. Eye Dropper

JavaScript Validator

When programming in JavaScript, you must use JSLint to validate that the JavaScript you wrote conforms to modern recommended idioms.

You can run JSLint on the command line locally if the JSLint program is set up correctly based on the JSLint source files. But then a JavaScript interpreter outside of the browser is required, such as node.js, Rhino, or spidermonkey.  Another, more convenient, possibility is to use the jslint4java wrapper program.


Libraries

dust.js has been selected by LinkedIn recently as their templating engine to unify the way web pages designed in HTML and CSS gets filled with data generated by other server based programs written in various languages including Java, Grails, and JRuby.  It is free and open source (looks like MIT license)

PhoneGap is a free and open source (Apache License) library for writing cross-mobile-platform HTML5 app to access technologies native to the mobile platform (vs. programs being stuck in the browser).

For building gesture/touch-enabled UI for cross-mobile-platform Apps, there is jQuery Mobile, which is a very young project still, and is free and open source: dual licensed under MIT and GPL2.  There is also Sencha Touch, a more mature library that is free and open source, cross-licensed under GPL3, a modified GPL3, a free (as in beer) commercial software license, and a paid commercial OEM license.

You might also need a library to add MVC or MVVM structure to your App.  For that, consider Backbone.js (MVC) or Knockout.js (MVVM).

For everything else, there's jQuery.

See also:
  1. Building Large-Scale jQuery Applications
  2. Tools For jQuery Application Architecture – The Printable Chart

2011-12-31

Resources for Learning Web Development (JavaScript, jQuery)

Assuming you have some working knowledge of HTML and CSS, then learning to program behaviours into web pages requires learning JavaScript, and here's resources I've looked into to help you learn JavaScript programming:

eBooks and paper Books
By "books", I mean "Bound Optimally Organized Knowledge". It's organized for structured learning and completeness.

Books I've looked into (literally) and would give at least a 4 out of 5 stars for:
Books that look promising based on the "cover" only:
  1. jQuery Fundamentals
  2. Web Development Recipes 
  3. Eloquent JavaScript: A Modern Introduction to Programming
  4. MDN: JavaScript Guide
Interactive Tutorials
Tutorials are organized for structured learning, often in a hands-on manner, but usually leaves gaps in knowledge.  Interactive tutorials have a turn-based prompting mechanics to it.

2010-11-10

Book Review: Art and Science of Teaching


The Art and Science of Teaching by Robert Marzano is subtitled, "A Comprehensive Framework for Effective Instruction." I would suggest emphasizing "Framework" in that description over "Comprehensive", but that is not to say the book is bad. In fact, I recommend this book, especially for the big ideas it discusses in some detail on effective teaching.

I've been meaning to write a brief review of this book as it's been given to me as a gift a long time ago.  It's a solid book of big ideas with adequate examples of how those ideas might be implemented in a classroom.  Ideas regarding, for example, how a teacher can "establish and maintain effective relationships with students," and how to "help students practice and deepen their understanding of new knowledge."

The ideas are great, and examples are good, and the ideas are backed up by research (that's the science part of the book).  I'd love to try employing more of these ideas into my own classroom in the future.  There are, however, two major flaws in the book I should mention.

2010-02-21

Book Review: Algorithm Design


Algorithm Design by Kleinberg and Tardos is a good handbook on algorithms, the best I've seen so far in terms of balancing theoretical understanding and practical concerns. Examples that are given often have a realism lacking in other texts, showing a concern for practitioners who may want to see how these algorithms could actually be useful.

On the other hand, the succinctness of the writing style meant I had to read passages several times to understand fully the concepts being explained (ie, it required a close reading, as we might say in philosophy writing). This is, I think, a good thing: rereading well written passages is more effective than reading repetitious passages once through anyway.

Especially in the chapters regarding NP completeness and approximation algorithms, the "tone" of the writing definitely turned much more mathematical, and that's especially when a good mathematical background is helpful.

Largely because of the succinctness of the writing style and assumed mathematical background, I would say this is more of an advanced upper-undergraduate level textbook, or a good introductory text at the graduate level. I'm afraid at the introductory level for undergraduates, this text may serve more to instil confusion (a better text at the undergraduate introductory level may be Introduction to Algorithms, which I also reviewed).

If you're looking for an advanced algorithms textbook, I would definitely recommend it.

2010-02-19

Book Review: Artificial Intelligence: A Modern Approach

Artificial Intelligence: A Modern Approach by Stuart Russell (Professor of Computer Science at University of California,
Berkeley) and Peter Norvig (Director of Research at Google) is the standard introductory textbook to AI theory and application at the undergraduate level.

It's friendly in the sense that it requires less mathematical maturity, and assumes less mathematical background. It does have a very comprehensive and broad survey of the entire field, which is good in that it gives the student a sense of the entire field, but bad in that there is much less depth in any single area.

If you are looking for a single good introductory textbook to get started into research, there are probably better alternatives (such as Pattern Recognition and Machine Learning, which I also reviewed). But if you are looking for a single good introductory textbook to understand the field better, and not necessarily to prepare to do original research, this is probably a great book to start with and I recommend it highly.

A word of caution of the term "artificial intelligence" though. Much of the algorithms and techniques referred to in this text are probably more accurately described as machine learning or statistical pattern recognition algorithms. If you are looking for a book on artificial general intelligence, you will be disappointed.

2010-02-17

Book Review: Pattern Recognition and Machine Learning


Pattern Recognition and Machine Learning is by Christopher Bishop (Chief Research Scientist at Microsoft Research Cambridge, and Professor of Computer Science at the University of Edinburgh).

It's a heavy read on machine learning algorithms in that it is very math intensive. It would not be too far off to call this an applied math textbook rather than a computer science textbook, and it is definitely aimed at the graduate level student with a good amount of mathematical maturity.

Having said that, if you are a machine learning researcher in need of learning all sorts of mathematical details of the algorithms you are using, this book is a good place to start. It is by no means a complete reference, but certainly a good introduction at the graduate level.

If you are an undergraduate student, there are other textbooks available that might be more suitable (such as Artificial Intelligence: A Modern Approach, which I also reviewed). If you just want cookbook style text on the libraries you could use to employ machine learning algorithms, there are probably other resources that would be more suitable.

If you are starting out in researching machine learning algorithms, or are using it as a large part of your computing science research, this is the right book. Just be prepared to learn and use a lot of math!

2010-02-15

Book Review: "Coders at Work"


Coders at Work is for programmers and computing scientists interested in how some very well known coders think about their art or craft. It is a series of interviews of some of the top coders of our time. It includes their thoughts on some very controversial issues on coding style, algorithm development, testing, documentation, etc.

It's a great book to read to get a sense of how some of these people think about those issues, and it's incredibly rewarding if you already know the names of some of the coders interviewed. I was especially excited to read the interviews of Peter Norvig, Guy Steele, Ken Thompson, and Donald Knuth. The other interviews were great too, and better if you already know something about those people.

Now just because some of these people think one way or another on an issue doesn't mean I would go and imitate them. The main thing is to read their explanation of what they're thinking, the why's and how's, and examine it to understand how they're thinking about an issue. Now how they think about issues — that is possibly worthy of imitation.

Definitely recommended for programmers and computing scientists wanting to improve their game!

2010-02-13

Book Review: "Hyperspace: A Scientific Odyssey Through Parallel Universes, Time Warps, and the 10th Dimension"

Wow, what can I say about this book? It inspired me to learn more science, specifically physics. Hyperspace: A Scientific Odyssey Through Parallel Universes, Time Warps, and the 10th Dimension has vivid analogies that I was able to, more or less, understand when I was about 11 years old.

The thought experiments Kaku talked about made me imagine the possibilities of the universe. It's a great book to get kids interested in science since it explains the intuitions without being stuck in the precise details.

Intuitions of what? Well, intuitions of space, time, and ultimately spacetime of more than three dimensions. It has nice thought experiments to help develop intuitions of what it's like to have more than three dimensions. Kaku also explains the intuitions around string theory, which is fascinating as well (even if it turns out that string theory is wrong, it's still fun to imagine the universe in a different way).

A great book, especially for kids. Highly recommended!

2010-02-11

Book Review: "Philosophy of Mind"


Philosophy of Mind (Dimensions of Philosophy) is a fantastic introduction to the subject, and to the basic fundamental issues surrounding any topic that relates to the mind, including cognitive science, artificial intelligence as it relates to cognitive science, psychology, etc.

It covers a lot of ground without presuming specialist knowledge of terminologies, and it briefly explains all related concepts that are required to understand the issues at play (eg, concepts from as far afield as philosophy of science, language, or the computing science concept of a Turing machine).

2010-02-07

Book Review: "Difficult Conversations: How to Discuss what Matters Most"


Difficult Conversations: How to Discuss what Matters Most is a good book offering an objective analysis of what goes on and into difficult conversations. Difficult conversations are those on topics that may be difficult and uncomfortable because of its ability to cause pain and negative, if not destructive, results.

By dissecting such conversations into three pieces that people can affect, viz, the "what happened" conversation, the "feelings" conversation, and the "identity" conversation, this book provides recommendations on how to diffuse and create constructive conversations instead.

This book provides examples of what to do and what not to do in some realistically common situations and this improves readers' understanding of the theories they lay out. The focus on actionable behaviours makes this book useful and insightful for the general audience, rather than merely inspirational.

2010-02-05

Book Review: "Religion and Science"


Religion and Science (Gifford Lectures Series) is an excellent introduction to historical and contemporary issues and views in the interaction of science, religion, and society.

Very detailed in its presentation of scientific topics, although for those who are already well versed in various popular general scientific topics, certain sections describing relativity, quantum theory, astronomy, etc, might be a bit repetitive.

The same could probably be said of the theological topics for those already well versed in them. That is, of course, why this book makes for an excellent introductory text.

This book is not a one or two sided view but instead presents many of the nuances in the interface between science and religion in society. I recommend this book, and especially more so in conjunction with Midgley's Science as Salvation: A Modern Myth and its Meaning, which I've reviewed as well.

2010-02-03

Book Review: "Science as Salvation: A Modern Myth and its Meaning"


Science as Salvation: A Modern Myth and its Meaning is a fantastic book about the development of science and its advancement in Western culture. It contains a lot of deep and thought provoking discussions on the position science holds in current Western culture, and its metaphysical and epistemological nature.

In particular, it looks at the notion of science as a societal, cultural, and even spiritual force, a notion that is sometimes thrust onto science and perpetuated by certain science writers. To some, the building of this notion tends towards using science as part of a myth constructed by people to shape and understand how to live in an age of an over abundance of information; perhaps it even seems to be displacing the role of religion.

Neither entirely anti-science nor pro-science, Midgley presents a nuanced view of the interaction of science, religion, and society. Midgley encourages a rethinking of the role and importance of science, and its relationship to how we live and how we ought to decide to live.

On the whole, this is a book I recommend on the philosophy of science and society. I also recommend reading this in conjunction with Barbour's Religion and Science (Gifford Lectures Series), which I will be reviewing as well.

2010-02-01

Book Review: "Blink: The Power of Thinking Without Thinking"

Malcolm Gladwell's Blink: The Power of Thinking Without Thinking presents some interesting ideas and anecdotes to help better understand how good decisions and snap judgements are made when people are faced with overwhelming data.

Plenty of skepticism ought to accompany you as you read this book. The stories are well written and may seduce you into believing his theories all too easily. Pack along some salt for a better taste. (If you are thinking of reading Think!: Why Crucial Decisions Can't Be Made in the Blink of an Eye, you might want to read my review of that one first.)

Especially important is to look into his explanation of how, why, and when the snap judgements worked in the cases he presents. He doesn't make the absurd claim that all snap judgements in all cases under all circumstances are better than thought out judgements. If you've carefully read Gladwell's Outliers: The Story of Success (which I've reviewed previously), you may notice that Gladwell's point in the narratives he shares are often subtle and sometimes easy to misinterpret. Maybe that's why it makes for such an enjoyable and engaging read!

2010-01-26

Book Review: "Outliers: The Story of Success"


Outliers: The Story of Success is an excellent book giving insight as to why certain people succeed under certain social and other conditions, explaining the significance of cultural legacies and hard work to success, and illustrating how knowing this can assist educators in helping more people succeed.

It's probably best to read this book carefully to understand what it is Gladwell is asserting.  This is because it's all too easy, as some seem to have done, to understand Gladwell's arguments as asserting that people succeed only due to environmental factors.  At one point, he even seems to explain how hard working a person is as being a product of the person's cultural heritage!

2010-01-24

Book Review: "Change or Die: The Three Keys to Change at Work and in Life"

The book Change or Die: The Three Keys to Change at Work and in Life first started off as an article in Fast Company. It encourages us to see how we can help others change their behaviour, help them make changes to their own lives, for the better, through three critical keys: relate, repeat, and reframe. These keys addresses the need to build positive relationships, to recommend specific behaviours, and to support the mindset created in this process, which underlie the changed behaviours. Filled with analysis and theory of specific case studies. A great read, and a book I recommend to all educators.