This page collects material on my course on System Programming and Scripting.
As a starting point for this course, this is a very good article, published in IEEE Computer, summarising the characteristics of scripting languages compared to general purpose programming languages.
Purpose and Learning Objectives
The purpose of the Course F21SC System Programming and Scripting is to deepen the understanding of a range of programming languages and to obtain a critical understanding of the outstanding features of each of the languages. In doing so, it provides advanced programming language skills, exercised through a series of courseworks. In particular, this course conveys the idea of scripting languages acting as glueware between components of existing software systems in order to build large systems.
Learning Objectives:
- Appreciation of role of different programming paradigms in configuring/managing systems:
- Object-oriented: good at structuring large code
- Imperative: good at performance
- Functional: good at abstraction
- Logic: good at reasoning
- Autonomous problem analysis/solution:
- Really understand the problem to pick the right paradigm/approach for producing a solution
- Understanding of core characteristics of contemporary operating systems: make good use of available resources
- Appreciation of role of language as glue wear in configuring/maintaining systems:
- Scripting languages combine existing code
- Knowledge of key abstractions across programming languages:
- Write reusable and maintainable code
- Technical proficiency in advanced techniques in different programming paradigms:
- Learn the Best of all Worlds
Pre-requisites:
- Solid knowledge of an object-oriented language, eg. Java.
- General software engineering skills in working with complex systems
Course Structure
After a general overview, the course is structured into 3 main blocks, covering the following material:
- Block 1: Linux Introduction and Basic Shell Scripting
- Block 2 : C# Programming
- Block 3: PHP Programming
Assessment:
- Assessed Coursework: 100%
- Mandatory demonstration of the coursework, including knowledge questions on the programming language.
- There is no exam for this module.
Learning Material
Slides for the lectures up to now:
- Week 1: Linux Introduction
(with supportive slides on shell programming, Bash: Regular Expressions, Bash: Shell Scripting Basics, Bash: Shell Scripting: Control Structures) - Week 2: Overview
- Week 3: C# Fundamentals, C# Objects & Classes, .Net and C# Introduction
- Week 4: C# Data Manipulation, Database access in C# and LINQ, C# GUI development
- Week 5: Threading in C#, C# Systems Programming
- Week 6: Advanced C# Features, C# Revision
- Week 7: Parallel Programming in C#
- Week 8: PHP Introduction, PHP Types
- Week 9: PHP Control Expressions (4up)
- Week 10: PHP Regular Expressions (4up), PHP Security, Email, Forms (4up)
- Week 11: Database Support, XML File Support
- Week 12: Revision
Future weeks:
Sample Sources for C# and for for PHP are available in a separate folder (download all PHP samples)
Coursework
Each coursework requires an implementation of a simple application (either in C# or PHP). Additionally, you must summarise the application in a report, following the structure specified in the assignment. Submit report, sources and a stand-alone application (C#) or a link to the on-line application (PHP), all electronically. Additionally, post the report, with suitable cover sheet, as a hard copy to the drop boxes in front of the School Office.
- Coursework 1: Deadline: 3:30pm Fri 26.10.2012 (Week 7)
- Coursework 2: Deadline: 3:30pm Fri 30.11.2012 (Week 12)
Reading List
- Douglas Bell, Mike Parr, C# for Students, Addison Wesley, 2004.
- Jesse Liberty, Brian MacDonald, Learning C# 3.0, O'Reilly, 2009.
- Kurt Normark, Object-oriented Programming in C# for C and Java Programmers, 2010. On-line version
- Eric Gunnerson, A programmer’s Introduction to C# 2, APRESS, 2005.
- Tom Archer, Inside C#, Microsoft, 2001.
- Andrew Birrell, An Introduction to programming with C# Threads, Microsoft, 2005.
- Arnold Robbins, Classic Shell Scripting: Hidden Commands that Unlock the Power of Unix, O'Reilly, 2005.
- Luke Welling and Laura Thomson, PHP and MySQL Web Development, Sams Publishing, 2005.
- Rasmus Lerdorf, Programming PHP, O'Reilly, 2006.
Other Resources
Other sources:
Lecturers:
- Hans-Wolfgang Loidl (HWL)
Links :
- Vision page
- Course Descriptor
-
- Linux Introduction
-
- PHP Docu
- PHP Manual (including a PHP Tutorial)
- HTML Quicklist
- HTML Tutorial
- MySQL cheat sheet
- PEAR Manual
-
- Software for download:
Related Courses: