0% found this document useful (0 votes)
2 views20 pages

1 Introduction

The document outlines the XJCO1921 programming project led by Professor Zheng Wang at the University of Leeds, focusing on software development principles and practices. It emphasizes the importance of modular programming, version control, and the use of command-line tools, while also detailing course assessments and resources available to students. The educational objective is to instill a deep understanding of software development beyond theoretical knowledge.

Uploaded by

woxine32767
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views20 pages

1 Introduction

The document outlines the XJCO1921 programming project led by Professor Zheng Wang at the University of Leeds, focusing on software development principles and practices. It emphasizes the importance of modular programming, version control, and the use of command-line tools, while also detailing course assessments and resources available to students. The educational objective is to instill a deep understanding of software development beyond theoretical knowledge.

Uploaded by

woxine32767
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

XJCO1921 PROGRAMMING PROJECT

Introduction
Zheng Wang

1
Who I am
• Zheng Wang (王峥)
• Professor at School of Computing @ University of Leeds
• Background
• PhD in compiler optimisation and programming languages
• Have been working on programming languages and compiler
projects for 15+ years
• Contributed into open-source projects (LLVM) and industry products
• Previously worked at IBM China Research Lab (CRL)
• Lead R&D team
• Learned Software Engineering by doing it with one of the best IT
companies

2
Resources
• Staff
• Prof. Zheng Wang (Leeds U.)
• Dr. Xiuying Yu (SWJTU)
• Minerva
• Lecture slides, tutorials, project description, announcement
• Please ask questions during lectures - lectures
should be interactive

3
Textbook

Kochan, Stephen G., Programming in C, Fourth


edition, 2015.

4
Assessment
• 100% Coursework

• First assignment (40%)


• Coursework spec is available on Minerva
• Work on this now – it is challenging!

• Second assignment (60%)

5
Support
• Lab Sessions
• weekly lab sessions

6
Why you should study this module?
• It is compulsory. ☺
• Learn some of what goes into developing a
software project
• Keep your programming skills sharp

7
Motivation
“Programming is about managing complexity: the
complexity of the problem, laid upon the
complexity of the machine. Because of this
complexity, most of our programming projects
fail.”

-Bruce Eckle in Thinking in Java


65% of large systems (over 1M Line of Code) are cancelled
before completion. 8
Goals
What are the goals of software development?
We aim at software that is:

• Correct
• Robust and hopefully…
• Flexible
• Reusable Usable.
• Efficient
Educational Objective of XJCO 1921
• Learn that building large software systems is not a
mere matter of programming
• Software Programming is not rocket science and not
something to just learn from a textbook
• My goal is to have you more than just intellectually
know it but really feel it and believe it by doing

10
Computer Science

• There is no one true language or system


• You should treat them as interchangeable
• learn multiple platforms
• And multiple languages
• Then use the best one for the job
• Without insisting that your own way is best
• All our examples will be based on Linux Systems
Modular programming
Separating the functionality
of a program into
independent,
interchangeable modules,
such that each contains
everything necessary to
execute only one aspect of
the desired functionality.
Version Control Version control allows you
to manage changes to
files over time.

Tutorials on Minerva

Use git from day one of


assignments
Building large projects

Compilation
Linking
Test-Driven Development
IDEs and Tools

• IDEs are specific tools


• They make some common tasks faster
• But obscure some underlying principles
• And do not work for all systems
• In particular, for cluster-based work
• Or for parallel work
• So we will study the most basic ones first
Command-Line Tools

• The most basic and simplest to get working


• Ubiquitous on nearly every modern system
• Easy to script (i.e. to automate)
• You were introduced to them in Term 1
• Use the lab this week to refresh your skills
• And to set up Github
Basic Command-Line Tools

• You need:
• A text editor to create code (e.g., VIM, nano)
• A compiler to convert it to executables (e.g., gcc)
• A way to run executables
• A way to find bugs
• Access to documentation
• We will use:
• vim, gcc, bash, gdb and man
Installing Ubuntu on Windows 10/11
1. Open Windows Powershell
2. Run “wsl –install”
3. Reboot your machine
4. Then type “Ubuntu” on the search box Windows 10 task bar to install Ubuntu
5. Then you can use Ubuntu under Windows as a standalone application in Windows (work in a virtual
machine)
6. You may want to use install MobaXterm ([Link] to login into WSL
See: [Link]

Install development tools in Linux:

After logining into Ubuntu, run the following commands to install the development tools (including gcc):

sudo apt update


sudo apt upgrade

sudo apt install -y software-properties-common


sudo apt-get install -y build-essential
Summary
The methodology I described will lead to software that is:

• Correct
• Robust and hopefully…
• Flexible
• Reusable Usable.
• Efficient

You might also like