This is the main course information page for the course "Industrial Programming" (F20SC/F21SC).
Click here for the Canvas module.
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.
A Guide for Independent Learners is available here.
Purpose and Learning Objectives
The purpose of the Course F21SC Industrial Programming 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
The weekly schdedule is:
-
- Most lectures are delivered asyncronously, online as captured lectures for you to view in your own time. There is a 1 hour sync, online slot, for a summary of the material in that week.
-
- Lecture slot: Mon 11:00 online (Collaborate Ultra webinar)
- Lab slot: Tue 13:00 online (Collaborate Ultra webinar)
- Lab slot: Fri 17:00 in-person (EM 2.45/EM 2.50; optional)
- Week 6: Consolidation week
The course is structured into 3 main blocks, covering the following material:
- Block 1: Linux Introduction and Basic Shell Scripting (1 week)
- Block 2 : C# Programming (6 weeks)
- Block 3: Python Programming (5 weeks)
Assessment:
- Assessed Coursework: 2 pieces, each contributing 50%
- There is no exam for this module.
Learning Material
The table below refers to the learning material for this course per week:
Sample Sources: for C# and Sample solutions for the early C# exercises. (all early C# exercises). Here sample sources for Python (download all Python samples).
Captured lectures:
MS stream channel of F20SC/F21SC lecture captures for 2020/21.
Extras:
Lecture Capture of the Generics and Delegates Example: QuickSort
,
Lecture Capture of C# Revision
Technical HOWTOs and online accessibility
For online and responsive blended learning (RBL) delivery, here are some HOWTOs on accessing basic resources of relevance for the course. These are also available in the resources section of the Canvas module for this course:
- Gitlab usage:
- How to do exercises with the gitlab-student server
- How to do exercises with the gitlab-student server, using Visual Studio Code as IDE
- HOWTO connect the Visual Studio IDE with the gitlab-student server (3 parts) , ,
- HOWTO add SSH keys into GitLab - Linux
- HOWTO add SSH keys into GitLab - Windows
- HOWTO register with gitlab
- HOWTO ask for programming help in gitlab
- Learning Gitlab from
- IDEs and tools:
- HOWTO get started with VisualStudio (Hello world and command-line argument examples)
- HOWTO use customised Visual Studio exercises
- Setting up Visual Studio or Visual Studio Code for our lab exercises
- Installing Visual Studio from
- Visual Studio Code for Web Developers from
- HOWTO install Mono on Ubuntu
- HOWTO publish a Visual Studio application
- Visual Studio Code for Web Developers from
- Up and Running with GitHub and Visual Studio 2019 (external)
- Using Git with Visual Studio (external)
- connect-visual-studio-gitlab TOCHECK
- Technology access (mostly HWU specific):
- HOWTO use the keyserver to access Windows lab machines (from Linux)
- HOWTO use the keyserver to access Windows lab machines
- Keyserver guidance document
- HOWTO use x2go to access Linux lab machines
- How to use x2go to log into the Linux Lab machines
- HOWTO submit CW on Vision
- HOWTO Download webinar recordings from Vision
- Canvas info for students
- HOWTO download and install the MACS Linux VM
- C# related topics:
- Python related topics:
More information is collected in the Canvas module VIF2PG (Inductiona Computer Science Postgraduate Students).
Coursework
Each coursework requires an implementation of a simple application (either in C# or Python). Additionally, you must summarise the application in a report, following the structure specified in the assignment. Submit report, sources and a stand-alone application, all electronically, through Canvas.
Coursework specifications will be handed out in Weeks 3 and 9. Coursework deadlines will be in Weeks 7 and 13, respectively.
- Coursework 1: Deadline: 3:30pm Tue 26.10.2021 (Canvas) (CW1 for F20SC, CW1 for F21SC) CW1 discussion video
- Coursework 2: Deadline: 3:30pm Tue 7.12.2021 (Canvas) (CW2 for F20SC, CW2 for F21SC) (see this info on the issuu data set format)
Use this sign-up sheet for CW2 teams.
Use this gitlab-student repo as starting point for the Python coding.
Test data and results for also-likes (CW2)
Lecture capture of an explanation of the also-likes functionality in CW2:
- Resit Coursework: Deadline: 3:30pm Thu 4.8.2022
Electronic submission through the top-level "Assignments" menu in Canvas.
Reading List
There is a reading list for this course on Blackwell's reading-lists portal.
- Jesse Liberty, Brian MacDonald, Learning C# 3.0, O'Reilly, 2009.
- Ian Griffiths Programming C# 8.0, O'Reilly, May 2019.
- Joseph Albahari, Ben Albahari, C# 7.0 in a Nutshell: The Definitive Reference, O'Reilly, Oct 2017. ISBN-13: 978-1491987650 (author site)
- Kurt Normark, Object-oriented Programming in C# for C and Java Programmers, 2010. On-line version
- The C# Programming Language for Java Developers, MS network
- Eric Gunnerson, A programmer’s Introduction to C# 5.0, Springer, 2012. ISBN-13: 978-1430245933.
- Andrew Birrell, An Introduction to programming with C# Threads, Microsoft, 2005.
- Learning C# by Programming Games, Arjan Egges, Jeroen D. Fokker, Mark H. Overmars. Springer 2013. ISBN: 978-3-642-36580-5. DOI 10.1007/978-3-642-36580-5.
- Arnold Robbins, Classic Shell Scripting: Hidden Commands that Unlock the Power of Unix, O'Reilly, 2005.
- Mark Lutz, Learning Python, 5th edition, O'Reilly, 2013. ISBN-10: 1449355730
- Michael Dawson, Python Programming for the Absolute Beginner, 3rd edition, Cengage Learning PTR, 2010. ISBN-10: 1435455002
- Tony Gaddis, Starting Out with Python, Pearson New International Edition, 2013. ISBN-10: 1292025913
- Guttag, John. Introduction to Computation and Programming Using Python. MIT Press, 2013. ISBN: 9780262519632.
- Budd, Timothy. Exploring Python. McGraw-Hill Science, 2009. ISBN: 9780073523378.
- Shaw, Zed A. Learn Python the Hard Way.
Other Resources
Other on-line sources:
- Article: Scripting: Higher-level Programming for the 21st Century.
- On-line textbook about Parallel Patterns in C# (basis for the class on parallel programming in C#)
- How to Think Like a Computer Scientist (online textbook)
- An Introduction to Python (online textbook)
- Dive into Python 3 (hypertext)
- Google's Python Class
New and other related information:
- TIOBE Index of Programming Languages, Oct'21 (Headline: Python programming language number 1)
- "Python Remains the Most Popular Programming Language", IEEE Spectrum, Aug 2018
- "The incredible growth of Python" Stackoverflow article from Sep 2017
- Haskell MOOC, free on-line course run by the Univ of Glasgow
Copyright
Except where stated otherwise, all teaching material, including lecture notes, tutorials and lab exercises, are Copyright (C) Heriot-Watt University, and respective authors. Please respect our rights over this material and contact us if you want to use it in another context.