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
- Lecture 1: Course Outline
- Lecture 2: Characteristics of Systems and Scripting Languages
- Lecture 3: Introduction to the .Net framework: Visual Studio .Net, the basics of a C# program.
- Lecture 4: C# Fundamentals: predefined type, expressions, data structures, decision and iteration
- Lecture 5&6: C# Objects: Class definition, methods constructors, inheritance.
- Lecture 7: C# GUI Programming
- Lecture 8: C# Data Structures
- Lecture 9: C# Advanced Features
- Lecture 10: C# Systems Programming
- Lecture 11: C# File and Stream Programming
- Lecture 12: C# Revision
- Lecture 13: C# Programming with threads
- Lecture 14: C# Distributed object model concepts
- Lecture 15: C# Reading on Using C# Remoting
- Lecture 16: Bash: Introduction to scripting, regular expressions
- Lecture 17: Bash: Shell scripting basics: writing a simple script, variables, arithmetic, basic commands, pipes, filters
- Lecture 18: Bash: Control structures, functions in shell scripting
- Lecture 19: Bash: Advanced Shell scripting
- Lecture 20: PHP introduction: embedding with HTML, variables and data structures
- Lecture 21: PHP types
- Lecture 22: PHP control structures, functions, objects
- Lecture 23: PHP strings, arrays and regular expressions
- Lecture 24: PHP forms, PHP session tracking
- Lecture 25: PHP file and database access
- Lecture 26: PHP email, PHP XML parsing
- Lecture 27-29: Revision
- Assessed Coursework: 100%
- Demonstration of the coursework
- There is no exam for this module.
- Week 1: Overview
- Week 2: .Net and C# Introduction, C# Fundamentals
- Week 3: C# Objects & Classes, C# GUI development
- Week 4: C# Data Manipulation, Database access in C# and LINQ
- Week 5: Advanced C# Features, C# Systems Programming
- Week 6: Threading in C#, C# Revision
- Week 7: Parallel Programming in C#
- Week 8: Bash: Regular Expressions, Bash: Shell Scripting Basics, Bash: Shell Scripting: Control Structures
- Week 9: PHP Introduction, PHP Types, PHP Regular Expressions
- Week 10: PHP Control Expressions
- Week 11: Database Support, XML File Support
- Week 12: Revision
- Coursework 1: Deadline: 3:30pm Mon 17.10.2011 (handed out 3.10.2011)
- Coursework 2: Deadline: 3:30pm Fri 4.11.2011 (handed out 17.10.2011)
- Coursework 3: Deadline: 3:30pm Fri 2.12.2011 (handed out 14.11.2011)
- 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.
Assessment:
Learning Material
Slides for the lectures up to now:
Future weeks:
Sample Sources are available from Vision and in a separate folder
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.
Demos for CW2: Tue 15.11.2011, Rm G48
Time Presenter 11:15 Faeq, Zhenar 11:30 Druckmiller, To Lan 11:45 Amiri, Mansoor 12:00 Magalhaes, Jose 12:15 Moschos, Theodoros 13:30 13:45 Godayer, Victor 14:00 KARAPETSAS, ALEXIOS 14:15 Naji, Haider 14:30 Constantinides, Christos 14:45 Jouwanah, Ammar 16:00 Furland Nygaard, Geir 16:15 Kale, Mike 16:30 Werfally, Abdelsalam 16:45 Demos for CW3: Thu 15.12.2011, Rm G48
Time Presenter 11:20 Werfally, Abdelsalam 11:40 Jouwanah, Ammar 12:00 Druckmiller, To Lan N 12:30 Naji, Haider A 14:00 Faeq, Zhenar S 14:30 Amiri, Mansoor A 15:00 Karapetsas, Alexios 16:00 Constantinides, Christos 16:30 Godayer, Victor 17:00 Kale, Mike U 17:30 Furland Nygaard, Geir Demos for CW3: Mon 19.12.2011, Rm G48
Time Presenter 11:00 17:00 Reading List
Other Resources
Other sources:
News :
Schedule for demos Tue 15.11.2011 is online
Weeks 9-11:
Lecture Mon 2:15-3:15 (EM3.07), Lecture + Lab Wed 4:15-5:45 (EM1.70 + EM2.50)
Lecturers:
- Hans-Wolfgang Loidl (HWL)
Links :
- Vision page
- Course Descriptor
- Unix intros
-
- Bash Scripting
-
- PHP tests
- PHP Manual (including a PHP Tutorial)
- Embedding PHP in HTML
- HTML Quicklist
- HTML Tutorial
- MySQL cheat sheet
- PEAR Manual
-
- Software for download:
Related Courses: