Sunday, December 18, 2011

Online Computer Science Classes & Course Materials

You don't have to go to school to learn new things. This statement is true especially for computer sciences. There are tons of CS material waiting for people who want to acquire some computer science knowledge.

You can easily find online computer science classes and course materials of some well-know universities, such as Stanford, MIT and Harvard. All you have to do is visit their site and begin learning.

For instance, Stanford Engineering professors are setting out to add a new level of interactivity to online education by offering some of the university's most popular computer science classes for free. Next semester will start in 2012 with 9 classes. Available classes are CS 101, Saas, Human Computer Interaction, NLP, Game Theory, Probabilistic Graphical Models, Cryptography, Design and Analysis of Algorithms and Computer Security.

Of course there are other online learning resources other than Stanford University classes. I've tried to gather up those online courses and some other online education resources. Continue reading if you are interested in studying computer science without going to university and hear about the things to do to self-educate yourself  :


Sign in to an online course offered by Stanford University :
Stanford University not only offers free access to their course materials, but also give a chance to complete assignments and take quizzes and an exam. What online students won’t receive, however, is one-on-one interaction with professors, the full content of lectures – or a Stanford degree.
"Introduction to Artificial Intelligence" Course: Taught by Sebastian Thrun and Peter Norvig, the curriculum draws from that used in Stanford's introductory Artificial Intelligence course. Artificial Intelligence is the science of making computer software that reasons about the world around it. Humanoid robots, Google Goggles, self-driving cars, even software that suggests music you might like to hear are all examples of AI. In this class, you will learn how to create this software from two of the leaders in the field. Classes has already been started but you can still reach the course material.
http://www.ai-class.com/

"Introduction to Databases" Course :  Taught by Professor Jennifer Widom, the curriculum draws from Stanford's popular Introduction to Databases course. This course covers database design and the use of database management systems for applications. It includes extensive coverage of the relational model, relational algebra, and SQL. It also covers XML data including DTDs and XML Schema for validation, and the query and transformation languages XPath, XQuery, and XSLT. The course includes database design in UML, and relational design principles based on dependencies and normal forms. Many additional key database topics from the design and application-building perspective are also covered: indexes, views, transactions, authorization, integrity constraints, triggers, on-line analytical processing (OLAP), and emerging "NoSQL" systems. Current course is about to end soon but you can still reach the course material.
http://www.db-class.com/

"Computer Science 101" Course : CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. The class will start in February 2012.
http://www.cs101-class.org/

"Software as a Service" Course : This course teaches the engineering fundamentals for long-lived software using the highly-productive Agile development method for Software as a Service (SaaS) using Ruby on Rails. Requires proficiency in an object-oriented programming language. The class will start in February 2012.
http://www.saas-class.org/

"Human-Computer Interaction" Course : In this course, you will learn how to design technologies that bring people joy, rather than frustration. The class will start in January 2012.
http://www.hci-class.org/

"Natural Language Processing" Course : The course covers a broad range of topics in natural language processing, including word and sentence tokenization, text classification and sentiment analysis, spelling correction, information extraction, parsing, meaning extraction, and question answering. The class will start January 23 2012.
http://www.nlp-class.org/

"Game Theory" Course : Popularized by movies such as "A Beautiful Mind", game theory is the mathematical modeling of strategic interaction among rational (and irrational) agents. Beyond what we call 'games' in common language, such as chess, poker, soccer, etc., it includes the modeling of conflict among nations, political campaigns, competition among firms, and trading behavior in markets such as the NYSE. The class will start in late February 2012.
http://www.game-theory-class.org/

"Probabilistic Graphical Models" Course : In this class, you will learn the basics of the PGM representation and how to construct them, using both human knowledge and machine learning techniques; you will also learn algorithms for using a PGM to reach conclusions about the world from limited and noisy evidence, and for making good decisions under uncertainty. The class will start in late January 2012 and will last approximately ten weeks.
http://www.pgm-class.org/

"Cryptography" Course : Cryptography is an indispensable tool for protecting information in computer systems. This course explains the inner workings of cryptographic primitives and how to correctly use them. The class will start in January 2012.
http://www.crypto-class.org/

"Design and Analysis of Algorithms 1" Course : In this course you will learn several fundamental principles of algorithm design. The class will start in January 23, 2012 and will run for five weeks.
http://www.algo-class.org/

"Computer Security" Course : In this class you will learn how to design secure systems and write secure code. You will learn how to find vulnerabilities in code and how to design software systems that limit the impact of security vulnerabilities. The class will start in February 2012.
http://www.security-class.org/


Access MIT Courses offered in Open CourseWare:
Electrical Engineering and Computer Science department of MIT provides their course materials. Includes broad range of courses such as "Introduction to C++", "A Gentle Introduction to Programming Using Python", "Automata, Computability, and Complexity", etc.

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/

Access Harvard University Course Content

For all courses: http://courses.cs50.net/

You can check out "Google Code University":
Google Code University includes sample course content and tutorials for Computer Science (CS) students and educators on current computing technologies and paradigms. There are courses about programming languages, web programming, web security, algorithms, android, distributed systems and Google tools. "Google's Phython Class" is one of the most popular courses.
http://code.google.com/intl/en-UK/edu/


Watch Computer Science videos offered in videolectures.net  : There are more than 5000 videos from a broad range of topics. Popular topics include Artificial Intelligence, Semantic Web, Machine Learning, Data Mining, NLP.
http://videolectures.net/Top/Computer_Science/


You can watch CourseHero Computer Science videos  : Includes tons of lectures from various universities all over the world.
http://www.coursehero.org/subjects/computer-science


You can watch videos of Computer Science courses offered in academicearth.org

There are 23 course videos available. Some of them are:
Introduction to Computer Science and Programming from MIT,
Machine Learning of Stanford,
Operating Systems and System Programming of Berkeley,
Building Dynamic Websites from Harward,
Introduction to Algorithms from MIT,
Data Structures of Berkeley

For all courses: http://academicearth.org/subjects/computer-science/

You can practice Code Kata : Greatness comes from practicing. Code Kata will help you do that in programming. In the software industry we take developers trained in the theory and throw them straight in to the deep-end, working on a project. It’s like taking a group of fit kids and telling them that they have four quarters to beat the Redskins (hey, we manage by objectives, right?). In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.
http://codekata.pragprog.com/2007/01/code_kata_backg.html

Other Resources:






This article is also introduced in DZone.



Thursday, November 10, 2011

Java Magazine, November/December 2011 Issue

Second issue of the Java Magazine by Oracle is available now. If you have a subscription, you can start reading the digital issue.



As you might remember, it was August when Java Premiere Issue was released. It was also the same day with the release of the long awaited Java 7. Java Magazine is a free bi-monthly digital magazine and is all about Java technology, the Java programming language, and Java-based applications.


Sunday, September 11, 2011

Developer Links Worth Looking at - September 2011

Here are some links that I've found useful and noted down.

To sum up, links of this month include some javascript tips, information about some java frameworks, podcasts and news. Continue reading to see more...


Saturday, August 27, 2011

Istanbul Java User Group Day 2011

Istanbul Java Day, 2011, beginning with the participation of the head of JCP. The organization will be held at Bahcesehir University Besiktas Campus 24th of September by Istanbul Java User Group.

Java Community Process (JCP.ORG) President Patrick Curran will be one of the main speakers. Other speakers are Talip Öztürk from Hazelcast, Çagatay Çivici from Primefaces,Altug Bilgin Altintas from Kodcu.com and Fuad Malikov.

Click for details and registration

UPDATE AFTER THE EVENT : Event has been held successfully

Wednesday, August 17, 2011

Why JQuery Rocks?

Dealing with JavaScript is usually a difficult, error-prone and messy task. There are lots of javascript libraries that simplifies the developer's job when using javascript and JQuery is one of them.

There are many javascript libraries but what makes JQuery so special?  This article tries to answer this question by also giving some usage details of some popular javascript libraries .

As stated in the JQuery official web site, jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript. You write less and do more!

There are lots of other javaScript libraries out there. Dojo, Prototype, ExtJs, MooTools, YUI ( click for the full list of javaScript libraries ) etc. but JQuery is the most popular of them. In usage statistics, jQuery dominates the market with up to 80% market share. (Check the usage statistics given at the end of this article.)

So, why jQuery is so popular? As a brief summary, JQuery is easy to learn, has good documentation, has an enhusiastic community behind it, has successful cross-browser compatibility, is pluggable and has tons of plugins. Continue to read to learn more.


Thursday, August 11, 2011

Developer Links Worth Looking at - August 2011

I want to share some links that I've come across lately. I hope you find the links interesting as much as I do.

To sum up, links include some useful java libraries, articles about a variety of different topics, some programming tips and news. Continue reading to see more...

Saturday, August 6, 2011

Firebug - Web Development Evolved

Firebug integrates with Firefox to put a wealth of web development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.

A quote from Java World Article defines Firebug as a revolutionary tool for web development:
"Web development arguably has two distinct eras: BFB -- the (prehistoric) time before Firebug when we learned the limits of alerts -- and the modern AFB (after Firebug) when we found that we can once again spend quality time with our families. Firebug truly is Web development evolved. Developing a Web application without using Firebug is like coding Java in vi -- it can be done, but it's just not worth the pain." [1]

Firebug is free and open source, licensed under the BSD license. Firebug was initially written in January 2006 by Joe Hewitt, one of the original Firefox creators.  Firebug has two major implementations, an extension (add-on) for Mozilla Firefox and an in-page implementation called Firebug Lite. A cross-browser version is in development. Approximately 3 million users have the Firebug add-on installed as of Nov. 2010 . [2]

In addition to debugging web sites, Firebug is a useful tool for web security testing and for web site performance analysis.

Official Web sites : http://getfirebug.com/

Firebug has also several useful extensions including YSlow and fireQuery.

There are web development tool of the others' browser like firebug. These are : 
  • Internet Explorer Developer Toolbar
  • Opera Dragonfly
  • Web Inspector
  • Google Chrome's Inspector

Tuesday, August 2, 2011

Technology Behind LinkedIn

As you all know, LinkedIn is one of the most useful and successful business-related social networking sites. As of March 2011 LinkedIn reached 100 million professionals worldwide and it continues to grow.

I use LinkedIn regularly and I really love it. ( By the way, you can visit  My LinkedIn profile. ) It is a perfect tool to create a professional identity and connect with other professionals. It is also available in 9 different languages including Turkish. Another reason why I like LinkedIn is that they use Java technologies regularly.[1]

I've seen the following slide in Alexander Lawrence's profile and it was pretty awesome to see that Java is the core technology behind the LinkedIn. Here is a (modified) picture of the main technology stack given in this slide:


After some googling, I've also found out LinkedIn is pure %99 java. [2] Yes, LinkedIn is written in 99% Java except for some in-memory C++ caches that they use.

Friday, July 29, 2011

Java 7 Released

Java 7 has finally been released by Oracle after five years, 9494 bug fixes, 1966 enhancements, 9018 changesets , four JSRs, 13 milestones and 147 builds. You can download java 7 immediately.

Java 7 does not have revolutionary changes but it includes some good features and language clean-ups. The changes includes 4 major JSRs which are :
  • JSR 334 : New language features : Strings in switch statements, try-with-resources statements, improved type inference for generic instance creation ("diamond"), simplified varargs method invocation, better integral literals, and improved exception handling (multi-catch)
  • JSR 292 JVM support for dynamic languages (eg. jruby, scala), following the prototyping work currently done on the Multi Language Virtual Machine = invokedynamic
  • JSR 166 A new multi-core ready API : Fork/Join is a Java framework for supporting a style of parallel programming in which problems are solved by splitting them into subtasks that are solved in parallel, waiting for them to complete, and then composing the results.
  • JSR 203 new I/0 APIS : Many of the methods were created without exceptions. File deletion fail error messages are detailed. Greater access to metadata such as file permissions is possible. java.nio.2
  • JDBC 4.1, XRender pipeline for java 2D, Upgraded classloader architecture, ECC, Gervill sound engine


Visit Java 7 product page for more information.

And be ready for Java 8. Java 8 will be implemented with the remaining features in late 2012. Java 8 is planned to include closures (lambda operator) and features to make a modular JDK (project jigsaw)

Java Magazine, Premier Issue

Java Magazine is ready by and for Java Community !! If you have a subscription, you can start reading the digital issue. The digital issue is very fun to read since it is highly digital, supported with videos, links and attached notes.

Java Magazine is a free bi-monthly digital magazine and is all about Java technology, the Java programming language, and Java-based applications. The premiere issue of Java Magazine is published the same day as the long awaited Java 7 release.

Front Cover of the Java Magazine, 1st Issue



Editor in Chief of the Java Magazine is Justin Kestelyn. He is the senior director, developer programs at Oracle.

Thursday, July 28, 2011

Apache SOLR : A Powerful Search Platform by Lucene

Considering the recent Apache SOLR version 3.3 release, it is a good chance to give some brief introduction about this powerful Java-written search library.

Apache SOLR is the popular open source enterprise search platform from the Apache Lucene project. It is a very powerful tool,especially for full text searching. It also provides features such as hit highlighting, faceted search, dynamic clustering, database integration, rich document (e.g., Word, PDF) handling, and geospatial search. [1]

Solr is written in Java and runs as a standalone full-text search server within a servlet container such as Tomcat. Solr uses the Lucene Java search library at its core for full-text indexing and search. It supports any programming language since it has REST-like HTTP/XML and JSON APIs. [1]





Wednesday, July 27, 2011

Periodic Table of HTML5 Elements

You've already known the periodic table of elements in chemistry from your early school days.
How about a periodic table for HTML5 elements?

Josh Duck prepared the following HTML5 periodic table showing the 106 elements currently in working HTML5 draft and two proposed elements.


You can view the original HTML5 periodic table from Josh Duck's web site. You can even interact and see descriptions of each element. It is very useful, try it.

Tuesday, July 26, 2011

Google Acquired the Pittpatt for facial recognition improvements

Google has just acquired the Pittpatt ( Pittsburgh Pattern Recognition ), a successful facial recognition start up. After this acquisiton, Google possibly aims to speed improvements related to face recognition and add new features to Picassa, Youtube and Google plus.


Monday, July 25, 2011

What is FreeMarker?

FreeMarker is a "template engine"; a generic tool to generate text output (anything from HTML to autogenerated source code) based on templates. It's a Java package, a class library for Java programmers. It's not an application for end-users in itself, but something that programmers can embed into their products.  

FreeMarker is designed to be practical for the generation of HTML Web pages, particularly by servlet-based applications following the MVC (Model View Controller) pattern. The idea behind using the MVC pattern for dynamic Web pages is that you separate the designers (HTML authors) from the programmers. Everybody works on what they are good at. Designers can change the appearance of a page without programmers having to change or recompile code, because the application logic (Java programs) and page design (FreeMarker templates) are separated. Templates do not become polluted with complex program fragments. This separation is useful even for projects where the programmer and the HTML page author is the same person, since it helps to keep the application clear and easily maintainable.

Although FreeMarker has some programming capabilities, it is not a full-blown programming language like PHP. Instead, Java programs prepare the data to be displayed (like issue SQL queries), and FreeMarker just generates textual pages that display the prepared data using templates. 

 



Sunday, July 24, 2011

Google Reverse Image Search

Google can finally perform reverse image search. Using this new feature, one can figure out the source of an image.

You can try image search by uploading an image of yours from http://www.google.com/imghp.

Saturday, July 23, 2011

Oracle Java 7 Celebration Webcast

Oracle will launch Java 7 -the first major Java revision in about five years- at July 28. The changes in the language and platform are more evolutionary than revolutionary, according to Java experts—including Mark Reinhold, chief architect of the Java Platform group at Oracle [1]

Oracle has celebrated the forthcoming Java version hosting a global celebration on 07/07 for java 7. You can view the Oracle Java 7 Celebration Webcast from following link:  Introducing Java 7 . More information about this event can be found here.

ZDNet also reported that Oracle debuted JDK 7 and a preview of MySQL 5.6 at OSCON 2011 this week and acknowledged it is trying to be a better open source citizen — but it is not trying to be an open source company. [3]

And some Java usage stats ... [1]

1.1 billion desktops run Java
930 million Java Runtime Environment downloads each year
3 billion mobile phones run Java
31 times more Java phones ship every year than Apple and Android combined
100 percent of all Blu-ray players run Java
1.4 billion Java Cards are manufactured each year


[1] http://www.eweek.com/c/a/Application-Development/Oracle-and-Java-7-The-Top-10-Developer-Features-626145/
[2] Image by http://geeknizer.com/java-jdk-7-feature-complete/
[3] Report by ZDNet : http://www.zdnet.com