24
Introduction to Software Development II Stephen P Levitt School of Electrical and Information Engineering University of the Witwatersrand 2019

Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Introduction to Software Development II

Stephen P Levitt

School of Electrical and Information EngineeringUniversity of the Witwatersrand

2019

Page 2: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Outline

1 My Contact Details

2 Classroom Rules

3 What This Course is About — Two Viewpoints

4 Course Logistics

5 C++ Resources

6 Software Development II Within the Curriculum

7 Secrets of Success

Course Introduction 1 / 22

Page 3: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

My Contact Details

Dr Stephen LevittCM 3.249 (same floor as E&IE reception)011 717 [email protected]

Course homepage: https://witseie.github.io/software-dev-2/

Course Introduction : My Contact Details 2 / 22

Page 4: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Classroom Rules

Arrive on timeLeave front row emptyTurn off cellphonesListen when others talkParticipate in class exercises

Course Introduction : Classroom Rules 3 / 22

Page 5: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

What This Course Is About (Software Quality Viewpoint)

A software project’s stakeholders

Course Introduction : What This Course is About — Two Viewpoints 4 / 22

Page 6: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

What is Software Quality?

“YouRHere”Small SA company developing location-based Android apps. Three developers workingon a social, location-based, check-in application available in the Google Play store.

Identify what the projects’ stakeholders (users, development team, project sponsors)value.

Course Introduction : What This Course is About — Two Viewpoints 5 / 22

Page 7: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Three Aspects to Software Quality I

Functional Quality (also known as External Quality)Structural or Design Quality (also known as Internal Quality)

Process Quality

Course Introduction : What This Course is About — Two Viewpoints 6 / 22

Page 8: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Three Aspects to Software Quality II

Stakeholders care about different thingsDifferent aspects are strongly connectedQuality bar varies depending on the project

Course Introduction : What This Course is About — Two Viewpoints 7 / 22

Page 9: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Is it Worth Designing Software Well?

Source: http://martinfowler.com/bliki/DesignStaminaHypothesis.html

Course Introduction : What This Course is About — Two Viewpoints 8 / 22

Page 10: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

What This Course Is About (Content Viewpoint)

Designing and implementing an object-oriented solution to a software problemLearning and coding in ANSI/ISO Standard C++Applying software engineering principles during software construction

In short, laying the foundation for a career in software development/engineering or acareer that includes some software development.

Course Introduction : What This Course is About — Two Viewpoints 9 / 22

Page 11: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Areas Focused on in the Software Lifecycle

Course Introduction : What This Course is About — Two Viewpoints 10 / 22

Page 12: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Lectures/Labs/Review Sessions

Lectures:Monday, 10:15-12:00 in FNB 45 (3rd and 4th periods)Tuesday, 12:30-13:15 in FNB 47 (5th period)

Labs:Friday, 14:15-16:30 in the D-Lab (Computer Lab)

Review Sessions (you will be allocated to one session):Friday 14:15-15:15 / Friday 15:30-16:30; in WSS203/WSS204/WSS206

Course Introduction : Course Logistics 11 / 22

Page 13: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Laboratories

Work in groups of 2 (as for the project) in the D-Lab or elsewhereDemis are available for assistanceCount 5% (≈ 1% per lab)Formative assessment — not based on the quality/correctness of your solutions

Start this week!

Course Introduction : Course Logistics 12 / 22

Page 14: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Lab Assessment Procedure

To receive the mark for each lab:Work on the lab weekly and push solutions each week to GitHubSubmit completed laboratory via GitHub before the deadline (one submission pergroup)Labs will be reviewed in review sessions.

Arrive on time for the review session with your solutions and participate in discussingthe labNo late arrivals or session swapping will be permitted without prior arrangement

Forum participation: a percentage equivalent to one lab’s mark will be awardedfor participation (note, the maximum lab mark is still 5%)Achieve 65% or more in the final exam, and you will automatically be awarded 5%for the labs

Course Introduction : Course Logistics 13 / 22

Page 15: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Class Test, Project and Exam

Test — counts 10%1 hour written test

Project — counts 35%Done in groups of 2 (lab groups) over a number of weeksWill be a challenging problem requiring an object-oriented solution, thoroughtesting and complete documentation

Exam — counts 50%3 hour written examClosed book, basic scientific calculators allowedAll material covered in lectures, labs, readings and the course project is examinable

Course Introduction : Course Logistics 14 / 22

Page 16: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Recommended Textbooks

C++ Programming: From Problem Analysis to Program Design by Malik

The C++ Primer by Lippman, Moo and LajoieThe C++ Programming Language by StroustrupEffective C++ Series by MeyersC++ Coding Standards by Sutter and Alexandrescu

Additional readings/podcasts/videos will be made available

Course Introduction : C++ Resources 15 / 22

Page 17: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

C++ Resources on the Web

Huge amount of material on the webSome of it good, some of it questionable, and a fair amount outdatedStart with the links on the course homepage, including:

Boost (peer-reviewed, portable C++ source libraries)

Course Introduction : C++ Resources 16 / 22

Page 18: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

C++ IDEs and Compilers

The IDE (Integrated Development Environment) ̸= The CompilerOfficially supported in this course: CodeLite 12 onwards and the GCC Compiler7.3.0 - both open source, cross-platform (download from course website)Alternative Compilers:

Microsoft’s CompilerClang

Alternative IDEs:Microsoft’s Visual C++XCodeNetbeansCode::Blocks…

Important issues are: Standards, Vendors and Conformance

Course Introduction : C++ Resources 17 / 22

Page 19: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Software Development II and the Software Development Course Line

Software Development I in 2nd yearData Structures and Algorithms in 2nd yearInformation Engineering Techniques in 3rd yearSoftware Development II in 3rd yearSoftware Development III in 4th yearData Intensive Computing for Data Science

Course Introduction : Software Development II Within the Curriculum 18 / 22

Page 20: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

I’m Doing EE — Why Am I Doing Software Development II?

Believe or not, EE’s need a good understanding of software for simulation andmodellingThis is one of the few courses in the entire curriculum which covers most of aproduct’s lifecycle — from requirements to implementation to testing

Course Introduction : Software Development II Within the Curriculum 19 / 22

Page 21: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

I’m Doing EE — Why Am I Doing Software Development II?

Believe or not, EE’s need a good understanding of software for simulation andmodellingThis is one of the few courses in the entire curriculum which covers most of aproduct’s lifecycle — from requirements to implementation to testing

Course Introduction : Software Development II Within the Curriculum 19 / 22

Page 22: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Secrets of Success

1 This is NOT a Software Appreciation Course2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours

lecture-time)3 Split coding tasks equally (do not let your lab partner do all the coding)4 Understand when you don’t understand5 Try to keep up to date

Course Introduction : Secrets of Success 20 / 22

Page 23: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Secrets of Success cont.

“ I hear and I forget.I see and I remember.I do and I understand.” — Confucious

Course Introduction : Secrets of Success 21 / 22

Page 24: Introduction to Software Development II - GitHub Pages · 2 Code early; code often (33 hours lab-time, 30 hours project-time, 30 hours lecture-time) 3 Split coding tasks equally (do

Secrets of Success cont.

“ Teachers open the door, but you must enter by yourself.”— Chinese Proverb

“ Curiosity will conquer fear even more than bravery will.” — James Stephens

Course Introduction : Secrets of Success 22 / 22