Free online courses provide a good way to extend your knowledge and skill set. Here's our regular round up of ones that are starting this month, plus a new addition to open courseware. We also have news of a summer opportunity for students embarking on a university computer science degree.
A new summer offering from Udacity that teaches Java to complete beginners isn't free - it costs $150 - but this is because it counts as a college credit to the California State University System.
Introduction to Programming is a beginner level class consisting of nine weeks' of material taught by Java expert Cay Horstmann. It sets out to teach basic skills and concepts of computer programming in an object-oriented approach using Java. Students will learn concepts like classes, methods and argument passing, loops, and general problem solving ability that will become building blocks to your programming skills.
The Udacity College Credit program, which is being run in conjunction with San Jose State University, also has classes in:
- Elementary Statistics
- College Algebra
- Entry-level Math
- Intro to Psychology
all of which could be relevant to those intending to be Computer Science majors.
Space for taking these courses for college credit is limited and enrollment ends May 24th with classes beginning June 3rd.
If you don't want the college credit, which is transferable to most US universities and colleges, the same courses can be taken free of charge.
MIT Open Courseware puts both undergraduate and graduate courses online making hundreds of them freely available both to individual learners and to teachers at other institutions. There are already dozens of courses that would be of interest to programmers wanting to deepen, broaden or expand their knowledge and the latest addition to the list is:
6.S096 Introduction to C and C++
Initially presented as a four-week course in January 2013 it is described as a fast-paced introduction to the C and C++ programming languages which provides the required background knowledge, including memory management, pointers, preprocessor macros, object-oriented programming, and how to find bugs when you inevitably use any of those incorrectly.
Coursera has two new MOOCs from the University of Washington starting on May 1st.
Introduction to Data Science is an 8-week course taught by Bill Howe. You can expect a workload of 8-10 hours per week and to:
Tour the basic techniques of data science, including both SQL and NoSQL solutions for massive data management (e.g., MapReduce and contemporaries), algorithms for data mining (e.g., clustering and association rule mining), and basic statistical modeling (e.g., linear and non-linear regression).
You need basic programming experience and some familiarity with database concepts. There will be four structured programming assignments: two in Python, one in SQL, and one in R; two open-ended assignments graded by peer assessment: one in visualization using Tableau, and one in which you will participate in a Kaggle competition; and two optional assignments: one involving an open-ended real-world project submitted by external organizations with real needs, and one involving processing a large dataset on AWS.
High Performance Scientific Computing is a 10-week taught by Randall J. LeVeque with a workload of 10-12 hours per week.
This is described as:
Programming-oriented course on effectively using modern computers to solve scientific computing problems arising in the physical/engineering sciences and other fields.
It sets out to provide an introduction to efficient serial and parallel computing using Fortran 90, OpenMP, MPI, and Python, and software development tools such as version control, Makefiles, and debugging.
For this course you'll need calculus, linear algebra and preferably numerical analysis. Experience of writing and debugging computer programs is also required and experience with scientific, mathematical, or statistical computing, for example in Matlab or R.
Also from Coursera, May 27th sees the start of a 6-week course with a workload of 10-12 hours per week , Software Defined Networking taught by Nick Feamster of Georgia Institute of Technology. His intention is to introduce this emerging paradigm in computer networking that allows a logically centralized software program to control the behavior of an entire network. Students are expected to taken at least an undergraduate-level networking course and have programming experience in Python. Experience with virtual machines and other virtual networking environments may also be useful. Assignments for the course will be lab-based programming assignments, probably using the Mininet software developed at Stanford University, which can run SDNs in emulated environments on networks of virtual machines.
A free course from 10gen starts May 13th. In M101J: MongoDB for Java Developers two industry experts, Andrew Erlichson and Jeff Yemin, will teach you everything you need to know to get started building a MongoDB-based app:
This course will go over basic installation, JSON, schema design, querying, insertion of data, indexing and working with language drivers. In the course, you will build a blogging platform, backed by MongoDB. Code examples will be in Java.
As the title suggests for this course you should be familiar with Java. An alternative version with code examples in Python and including a brief Python introduction which requires a working knowledge of at least one mainstream programming language that supports MongoDB starts June 17th.
The course, which has a workload of around 10 hours per week is self-paced with weekly deadlines will be broken down into short video segments with periodic assessments to check on your progress, weekly assignments and a final exam and there will be online forums and weekly online office hours.