Unreal Development Kit Released

Epic Games just released the Unreal Development Kit, a fully-featured SDK based on the award-winning Unreal 3 engine that powers a wide range of today’s most popular games; and it’s free for educational and non-commercial use — wow!

UDK Effects Editor example

There are some rather heavy licensing fees once you start making money from your game — $0 (zero) up-front, and a 0% royalty on you or your company’s first $5,000 (US) in UDK related revenue, and a 25% royalty on UDK related revenue above $5,000 (US) — though, if you take into consideration that you can upgrade to the real Unreal engine licensing and skip the royalty fees once you reach fame and fortune, the Unreal Development Kit remains extremely attractive for any kind of game development.

Have a look at the list of features and the showcase, or just skip everything and grab it!

MIT Introduction to Computer Science and Programming

MIT Logo“MIT 6.00 — Introduction to Computer Science and Programming” is one of the best introductions to programming I’ve seen, and I guess I shouldn’t expect less from the Massachusetts Institute of Technology. 24 video recordings of Computer Science lectures (totalling roughly 20 hours) by Professors Eric Grimson and John Guttag, current and former heads of Electrical Engineering and Computer Science at MIT. The course focuses on, quite simply, teaching you how to think like a programmer and solve problems computationally. Historically, LISP was the language of choice for Computer Science introductions at MIT, but was since replaced by every imperative programmer’s new darling, Python.

To quote the overview given in the first video, the course revolves around:
  • Computational thinking
  • Understanding code
  • Understanding abilities and limits
  • Mapping problems into computation

I highly recommend watching this if you’re new to programming, a hobby programmer, or even if you’re pretty well-versed — I’m sure there are nuggets of useful information inthere for everyone. Give Lecture 1 a look; if you like it, I’ve embedded the entire course after the jump, but it can also be found on the official course website, along with assignments, exams and solutions.

Lecture 1: Goals of the course; what is computation; introduction to data types, operators, and variables

Lecture 2: Operators and operands; statements; branching, conditionals, and iteration

Lecture 3: Common code patterns: iterative programs

Lecture 4: Decomposition and abstraction through functions; introduction to recursion

Lecture 5: Floating point numbers, successive refinement, finding roots

Lecture 6: Bisection methods, Newton/Raphson, introduction to lists

Lecture 7: Lists and mutability, dictionaries, pseudocode, introduction to efficiency

Lecture 8: Complexity; log, linear, quadratic, exponential algorithms

Lecture 9: Binary search, bubble and selection sorts

Lecture 10: Divide and conquer methods, merge sort, exceptions

Lecture 11: Testing and debugging

Lecture 12: More about debugging, knapsack problem, introduction to dynamic programming

Lecture 13: Dynamic programming: overlapping subproblems, optimal substructure

Lecture 14: Analysis of knapsack problem, introduction to object-oriented programming

Lecture 15: Abstract data types, classes and methods

Lecture 16: Encapsulation, inheritance, shadowing

Lecture 17: Computational models: random walk simulation

Lecture 18: Presenting simulation results, Pylab, plotting

Lecture 19: Biased random walks, distributions

Lecture 20: Monte Carlo simulations, estimating pi

Lecture 21: Validating simulation results, curve fitting, linear regression

Lecture 22: Normal, uniform, and exponential distributions; misuse of statistics

Lecture 23: Stock market simulation

Lecture 24: Course overview; what do computer scientists do?

Thank you, MIT, for making your courses open like this.

For more information, see the course website. You can find more OpenCourseWare on the OpenCourseWare website.

Favorite Programming Jokes

What is your best programmer joke? is now one of my favorite StackOverflow threads — C-x M-c M-butterfly!

A man flying in a hot air balloon suddenly realizes he’s lost. He reduces height and spots a man down below. He lowers the balloon further and shouts to get directions, “Excuse me, can you tell me where I am?”

The man below says: “Yes, you’re in a hot air balloon, hovering 30 feet above this field.”

“You must work in Information Technology,” says the balloonist.

“I do” replies the man. “How did you know?”

“Well,” says the balloonist, “everything you have told me is technically correct, but It’s of no use to anyone.”

The man below replies, “You must work in management.”

“I do” replies the balloonist, “But how’d you know?”

“Well”, says the man, “you don’t know where you are, or where you’re going, you expect me to be able to help. You’re in the same position you were before we met, but now it’s my fault.”

Feature, not a bug

“Knock, knock.”

“Who’s there?”

very long pause…

“Java.”

:-o

Autotest - Fully automated testing

Interesting automated software test system concept. The goal is to design this for the Linux kernel, but it should be very useful in other regards as well.

Why is programming fun?

This is an extract from Fred Brooks’ (Frederick P. Brooks, Jr.) book, The Mythical Man-Month. This is one of the best explanations of why programming is so interesting. It touches on all aspects of the mystique of programming. If you haven’t read the book, go out, buy it, and read it. The book was first published in 1974 and then republished in 1995. What Fred Brooks had to say then based on his experiences with the development of the OS/360 system is still relevant today.