A project-based course with extensive hands-on programming experience emphasising problem-solving techniques and applications in computer systems engineering. Topics include: algorithms and data structures, parsing and translation, concurrent programming, scripting languages, systems programming.