Hace aproximadamente 7 semanas que escribí una entrada hablando sobre Udacity y su primer curso, Construir un motor de búsqueda. Pues bien, acaba de terminar, yo estaba inscrito y la verdad es que me ha gustado bastante, ya que he aprendido un montón de cosas interesantes, aparte de aprender a mejorar la eficiencia del código y refrescar mi conocimiento sobre python, el cual tenía un poco abandonado.

Por desgracia no he podido obtener el certificado del curso ya que a partir de la unidad 6 por falta de tiempo fui dejando de seguir el curso. Sin embargo sí que terminé de ver todo el contenido aunque no hiciera el examen final.

Para todo aquel que esté interesado el curso (Lo cual recomiendo totalmente,) se va a volver a repetir, y hoy día 16 comienzan otros cuatro cursos igual de interesantes en los que me he inscrito, a continuación os dejo información sobre ellos:



The Design of Computer Programs

Impartido por Peter Norvig, Director de investigación en Google


El contenido del curso es el siguiente:


The key to progressing from a novice programmer to an expert is mindful
practice. In this class you will practice going from a problem description
to a solution, using a series of assignments. With each problem you will
learn new concepts, patterns, and methods that will expand your ability and
help move you along the path from novice towards expertise.

WEEK 1:

Winning Poker Hands

Steps of the design process; Developing for clarity and generality;
Arguments for program correctness; Experimentation and simulation.;
Design tradeoffs; Simplicity and Clarity. Decomposition and composability.

WEEK 2:

Back of the Envelope

Back of envelope calculations; When to use brute force and when to be
clever; The Zebra puzzle; Generator expressions; Permutations and
combinations. Cryptarithmetic; Recursive and wishful thinking.

WEEK 3:

Regular Expressions, other languages and interpreters

Defining the language of regular expressions; Interpreting the language;
Defining the set of strings matched by a regular expression;
Other languages.

WEEK 4:

Dealing with complexity through search

Search: finding your way with a flashlight or boat; pouring water.
Analyzing the efficiency of an algorithm; Recurrence relations; Matching
data types with algorithms; Majority algorithm; Longest palindrome
substring algorithm.

WEEK 5:

Dealing with uncertainty through probability

Probability: the game of Pig; Maximizing expected utility to optimize strategy.

WEEK 6:

Word Games

Managing complexity; Large sets of words; Appropriate data structures; Word games.

WEEK 7:

Conclusion

Final exam/project

Web Application Engineering

Impartido por Steve Huffman, creador de Reddit y HipMuk

Contenido:


Description: Web applications have the power to provide useful services to millions of
people worldwide. In this class, you will learn how to build your own blog application
starting from the basics of how the web works and how to set up a web application and
process user input, to how to use databases, manage user accounts, interact with other
web services, and make your application scale to support large numbers of users.

WEEK 1:

How the Web Works

Introduction to HTTP and Web Applications

WEEK 2:

How to Have Users

Getting and processing user input

WEEK 3:

How to Manage State

Databases and persistent data

WEEK 4:

Whom to Trust

User authentication and access control

WEEK 5:

How to Connect

Web applications as services, using APIs

WEEK 6:

How to Serve Millions

Scaling, caching, optimizations

WEEK 7:

Changing the World

Building a successful web application, project

Programming Languages

Impartido por Wetley Weimer, profesos en la Univerdidad de Virginia


Description: This class will give you an introduction to fundamentals
of programming languages. In seven weeks, you will build your own simple web browser
complete with the ability to parse and understand HTML and JavaScript. You will learn
key concepts such as how to specify and process valid strings, sentences and program
structures. Then, you will design and build an interpreter - a program that simulates
other programs.

WEEK 1:

String Patterns

Finding and specifying classes of strings using regular expressions

WEEK 2:

Lexical Analysis

Breaking strings down into important words

WEEK 3:

Grammars

Specifying and deconstructing valid sentences

WEEK 4:

Parsing

Turning sentences into trees

WEEK 5:

Interpreting

Simulating programs

WEEK 6:

Building a Web Browser

Interpreting HTML and JavaScript

WEEK 7:

Wrap-up

Exam testing your knowledge

Applied Cryptography

Impartido por David Evans, Profesor en la Universidad de Virginia y tutor del anterior curso de construir el motor de búsqueda.


Description: Cryptography is about “secret writing”. In this class, we
will introduce the mathematical foundations of cryptography and build programs to
perform encryption. We will see how to use cryptography to solve important problem
such as how to authenticate users, secure websites, and do computation without
exposing up your data. We will also look at the things that can go wrong when
cryptography is misused or implemented badly.

WEEK 1:

Symmetric Encryption

Sending messages when two people share a secret

WEEK 2:

Authentication

Using symmetric encryption to manage passwords securely

WEEK 3:

Asymmetric Encryption

Public-key cryptosystems

WEEK 4:

Public-key Protocols

Secure commerce, certificates

WEEK 5:

Digital Cash

How to make money from numbers alone

WEEK 6:

Secure Computation

Computing without exposing data

WEEK 7:

Wrap-up

Problems cryptography can and cannot solve

Índice