Machine Learning Books and Lectures

Jordan, one of the readers of the blog, wrote to point out some cool references for machine learning, mathematics and artificial intelligence.

Thanks again for all your contributions. I’m a .NET programmer coming from a background of studying politics and Latin American studies so when the moment came that I realized I was interested in A.I., I didn’t have many resources to turn to.

I have a collection of books and links that I found very very helpful when I was trying to learn about these concepts. I was thinking they could be useful to some of your readers who were in my shoes two years ago. So without further adieu:

Handbook of Normal Frames and Coordinates

"Handbook of Normal Frames and Coordinates," Iliev, Bozhidar Z. (2006)

“This can be a heavy text, but if you understand the concept, this can take you to the next level – I would categorize this as Topology but has applications in quantum physics, theoretical mathematics, theoretical physics etc…- in context of your blogs – granted this is a dedicated read – I think readers will be able to appreciate and truly understand what a Hilbert Space is after reading this book.”

Linear Algebra

"Linear Algebra," Jim Heffron (2008)

“I liked this one because it was free and is still highly rated – I have also heard great reviews about David Poole’s book on linear algebra, but I couldn’t get myself to shell out the money when this was free.”

Complex To Real

http://www.complextoreal.com/tutorial.htm

“There are a ton of great articles here – I have personally read the ones on fourier transforms and wavelet transforms – great stuff”

Stanford Lectures – Fourier Analysis series

(free through Youtube or iTunesU)

“Email the Professor for the companion book. At this point it may have been published – but well worth shelling out the dough in any case.”

Bio-Inspired Artificial Intelligence

"Bio-Inspired Artificial Intelligence," Floreano and Mattiussi (2008)

“Excellent reference – fairly in depth for the number of topics it covers, lots of illustrations (illustrations are always a good thing 🙂 and I’ve also found it to be a useful source for inspiration. I bought this book while I was looking into fuzzy swarm intelligence – it doesn’t have all the answers, but I am simply in love with this book.”

Video lectures on Machine Learning

http://videolectures.net/pascal/

“A collection of video lectures featuring very brilliant people – let’s face it… if you’re doing or are interested in mathematics this complex… you probably don’t know too many people who you can talk to / learn from on the subject unless you’re in a University studying this kind of thing – these are some great lectures on machine learning – I just recently found this site but wish I had found it sooner – it’s great if you’re just exploring machine learning or are very well versed in it – however, I fall somewhere in the middle of that distribution so take it for what it’s worth!”

Fearless Symmetry

"Fearless Symmetry," Ash and Gross (2006)

Another accessible book to those without heavy training in math – great intro to Galois Theory, the Riemann Hypothesis and several other concepts.

Zero: The Biography of a Dangerous Idea

    "Zero: The Biography of a Dangerous Idea," Charles Seife (2000)

This one is more historical and conceptual than technical but it’s a captivating read and will help get you through those hard times when you want to put down that book on K-Dimensional Manifolds, but still need to satisfy your mathematical mind (some say it’s never at rest once you catch that "learning bug").

Khan Academy

http://www.khanacademy.org/

Finally,  when you get lost, go here! The Khan Academy is a not-for-profit 501(c)(3) with the mission of providing a world-class education to anyone, anywhere.

 

Thanks Jordan! I hope readers can enjoy those resources as much as I did. Cheers!

C# is now a better language than Java…

… but I really feel like I need to try Scala.

After some chatting and hearing wonders about this language I decided to try something new. I decided to try Scala.

Here is a list of cool references, not only for Scala, but about programming in general, kindly given by an experienced programmer I met some weeks ago.

 

Books

Programming in Scala: A comprehensive step-by-step guide

~ Martin Odersky, Lex Spoon, and Bill Venners

This book is the authoritative tutorial on the Scala programming language, co-written by the language’s designer, Martin Odersky.

Clean Code: A Handbook of Agile Software Craftsmanship

~ Robert C. “Uncle Bob” Martin

Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way.

Refactoring: Improving the Design of Existing Code

~ Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts

Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of small behavior-preserving transformations, each of which “too small to be worth doing”. However the cumulative effect of each of these transformations is quite significant. By doing them in small steps you reduce the risk of introducing errors. You also avoid having the system broken while you are carrying out the restructuring – which allows you to gradually refactor a system over an extended period of time.

Implementation Patterns

~ Kent Beck

Great code doesn’t just function: it clearly and consistently communicates your intentions, allowing other programmers to understand your code, rely on it, and modify it with confidence. But great code doesn’t just happen. It is the outcome of hundreds of small but critical decisions programmers make every single day. Now, legendary software innovator Kent Beck–known worldwide for creating Extreme Programming and pioneering software patterns and test-driven development–focuses on these critical decisions, unearthing powerful “implementation patterns” for writing programs that are simpler, clearer, better organized, and more cost effective.

Code Complete: A Practical Handbook of Software Construction

~ Steve McConnell

For more than a decade, Steve McConnell, one of the premier authors and voices in the software community, has helped change the way developers write code–and produce better software. Now his classic book, CODE COMPLETE, has been fully updated and revised with best practices in the art and science of constructing software. Whether you’re a new developer seeking a sound introduction to the practice of software development or a veteran exploring strategic new approaches to problem solving, you’ll find a wealth of practical suggestions and methods for strengthening your skills. Topics include design, applying good techniques to construction, eliminating errors, planning, managing construction activities, and relating personal character to superior software. This new edition features fully updated information on programming techniques, including the emergence of Web-style programming, and integrated coverage of object-oriented design. You’ll also find new code examples–both good and bad–in C++, Microsoft(r) Visual Basic(r), C#, and Java, though the focus is squarely on techniques and practices.

Amazon Editorial Review

The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)

~ Frederick P. Brooks

The classic book on the human elements of software engineering. Software tools and development environments may have changed in the 21 years since the first edition of this book, but the peculiarly nonlinear economies of scale in collaborative work and the nature of individuals and groups has not changed an epsilon. If you write code or depend upon those who do, get this book as soon as possible — from Amazon.com Books, your library, or anyone else. You (and/or your colleagues) will be forever grateful. Very Highest Recommendation.

 

Blogs & Online Resources

Joel on Software

A weblog by Joel Spolsky, a programmer working in New York City, about software and software companies.

The Artima Developer Community

Artima.com is a collection of resources about Java, Jini, the JVM, and object oriented design.

Mark’s Blog

Mark Russinovich’s technical blog covering topics such as Windows troubleshooting, technologies and security. Among other feats, Russinovich was the man behind the discovery of the Sony rootkit in Sony DRM products in 2005.

Object Mentor’s Blog

A team of consultants who mentor their clients in C++, Java, OOP, Patterns, UML, Agile Methodologies, and Extreme Programming.

 

People to follow

@unclebobmartin

Known colloquially as “Uncle Bob”, Robert Cecil Martin has been a software professional since 1970 and an international software consultant since 1990. In 2001, he led the group that created Agile software development from Extreme programming techniques. He is also a leading member of the Software Craftsmanship movement.

He is founder and president of Object Mentor Inc., a team of consultants who mentor their clients in C++, Java, OOP, Patterns, UML, Agile Methodologies, and Extreme Programming.

@KentBeck

Kent Beck is an American software engineer and the creator of Extreme Programming and Test Driven Development. Beck was one of the 17 original signatories of the Agile Manifesto in 2001.

C# 3.0 – Guia de Bolso

Alguns dias atrás passei na Saraiva e resolvi comprar alguns livros. Oras, se direto gasto dinheiro com tranqueiras da china, porque não dispensar alguma graninha em algo mais útil?

Pois bem, uma das minhas aquisições foi o livro C# 3.0 Guia de Bolso, Tradução da Segunda Edição. Achei interessante pois minha habilidade .net ficou parada na versão 2.0 por muito tempo. Logo sairá a versão 4.0 e eu ainda nem descobri para que servem essas classes novas Func e Action inseridas no framework.

Para programadores atarefados que desejam um guia compacto de C# 3.0 e LINQ, porém de fácil leitura, o C# 3.0 Guia de Bolso, Tradução da Segunda Edição, informa exatamente o que você precisa saber – sem longas instruções ou exemplos em excesso.

Apesar de sua compactabilidade, este guia de bolso não economiza na profundidade e nos detalhes. Ele adota os desafios conceituais de aprendizagem do C# 3.0 e LINQ.

O guia inclui ilustrações e exemplos de código para explicar:
Os novos recursos do C# 3.0, como as expressões lambda, tipos anônimos, propriedades automáticas, e muito mais.

  • Todos os aspectos da sintaxe C#, tipos predefinidos, expressões e operadores.
  • A criação de classes, structs, delegates e eventos, enums, genéricos e limitadores, manipulação de exceção e iteradores.
  • As sutilezas do boxing, sobrecarga de operação, covariância de delegates, resolução do método de extensão, reimplementação de interface, tipos nullable e operação de lifting.
  • LINQ, começando pelos princípios da seqüência, execução adiada e operadores típicos de query, e finalizando com uma referência completa à consulta de sintaxes – incluindo múltiplos geradores de junção, agrupamento e continuação de queries.

Se você já conhece Java, C++ ou uma versão anterior do C#, o C# 3.0 Guia de Bolso, Tradução da Segunda Edição, é a opção ideal.

 

Pois bem, acontece que, depois de três dias lendo esporadicamente este livro, estou concluindo sua tradução não é das melhores…

O livro em si é ótimo, o conteúdo é exatamente o que eu procurava. Sem enrolações, mas ainda assim com todas as informações mais críticas e interessantes. Para um guia de bolso, não deixa absolutamente nada a desejar.

Mas como nem tudo é perfeito, vez ou outra tive que me deparar com alguns erros de digitação. Poucos, considerando o número de páginas do livro, mas o suficiente para que eu notasse e viesse aqui publicar minha opinião. Existem também algumas traduções que eu particularmente não concordo que deveriam ser feitas, como por exemplo, uma seção onde se traduz where T : new() para Onde T : new(), em restrições de parâmetros genéricos. Mas claro, isto talvez faça sentido de um ponto de vista mais didático.

Ao fim das contas, minha opinião é a seguinte: Se quiser um ótimo guia de referência para C# 3.0, então compre este livro. Ou, se gostar de uma leitura em língua inglesa, busque pelo original.

The Art of Electronics

art-of-electronics

Apesar de sua última edição ter sido escrita em 1989, o livro The Art of Electronics ainda continua como um dos mais populares da área. Tendo como principal audiência estudantes de graduação, hobbistas, inventores e experimentadores, assume um tom leve e informal, tornando sua leitura mais acessível e agradável, sendo ao mesmo tempo bastante denso na quantidade de informação que possui.

O interessante deste livro é que ele não pressupõe do leitor um conhecimento prévio em cálculo, sendo porém muito mais aproveitoso se o leitor o possuir.

Este livro está disponível na biblioteca comunitária da Universidade Federal de São Carlos, no piso 3 (Direita – Bloco 2, Estante G621.381 / H816a.2).

Para quem deseja realmente aprender eletrônica utilizando este livro, não se pode deixar de lado o Student Manual for The Art of Electronics, guia com exercícios, experimentos e textos explicativos direcionado ao estudante, expandindo o livro original.

HOROWITZ, Paul; HILL, Winfield. The art of electronics. 2 ed. Cambridge: Cambridge University Press, 1989. 1125 p. www.artofelectronics.com.

HOROWITZ, Paul; HAYES, Thomas. Student Manual for The Art of Electronics; Cambridge: Cambridge University Press, 1989. 614p.

Partes destes livros estão disponíveis eletronicamente e podem ser consultadas pela Amazon ou pelo Google Books. O livro original custa cerca de R$220 na Livraria Cultura, enquanto o Student Manual, cerca de R$110. Nem preciso dizer que, apesar de excelente, recomendo muito mais alugar do que comprar este livro devido ao seu preço proibitivo.