SOFTWARE ENGINEERING I 1st lecture Contact info Page: - - PowerPoint PPT Presentation

software engineering i
SMART_READER_LITE
LIVE PREVIEW

SOFTWARE ENGINEERING I 1st lecture Contact info Page: - - PowerPoint PPT Presentation

SOFTWARE ENGINEERING I 1st lecture Contact info Page: http://kimutis.lt Emails: donataskimutis@gmail.com Vytautas.Aseris@gmail.com In the subject of the email, provide this: string.Concat( PSI I: ", Your


slide-1
SLIDE 1

SOFTWARE ENGINEERING I

1st lecture

slide-2
SLIDE 2

Contact info

  • Page:

– http://kimutis.lt

  • Emails:

– donataskimutis@gmail.com – Vytautas.Aseris@gmail.com

  • In the subject of the email, provide this:

– string.Concat(„PSI I: ", „Your text");

slide-3
SLIDE 3

Course material

  • Code examples:

– http://kimutis.lt/source.html

  • Slides:

– http://kimutis.lt/slides.html

  • Material:

– Will be uploaded after the lecture (within couple of days) – For students in this course only – Might change – always check the latest version

slide-4
SLIDE 4

Purpose of the course unit

  • To get acquainted with software development

methods using C# programming language and .NET (core) framework, to consolidate knowledge of object-oriented programming.

slide-5
SLIDE 5

Learning outcomes of the course unit (1)

  • Design, implement and develop applied programs, apply

code reviews;

  • Apply knowledge of software systems engineering, make

qualified design and architectural decisions while expanding the functionality of the developed system;

  • Combine theory and practice using .NET framework

technologies and developing OO application systems;

  • Develop the knowledge about data types, named and
  • ptional arguments as well as other new features of C#

programming language;

slide-6
SLIDE 6

Learning outcomes of the course unit (2)

  • Program in C# independently and in a team, applying basic

OO design templates using C# programming environment;

  • Recognize the need for continuous learning and will have

the initial skills;

  • Work in the team - on site and remotely;
slide-7
SLIDE 7

Survey

  • 5mins.
  • In your group chats (someone has to initiate

call)

  • After that, group has to present outcome
  • Honest!
slide-8
SLIDE 8

Last year winners!

slide-9
SLIDE 9

Let’s learn together ☺

slide-10
SLIDE 10

15 mins

slide-11
SLIDE 11

Course overview (1)

Four main sections:

  • 1. Introduction to basic C # constructs;
  • 2. Exceptional C # and OOP features;
  • 3. Working with databases;
  • 4. MS.NET and OO solutions and patterns
  • verview;
slide-12
SLIDE 12

Course overview: 1, 2 lecture

  • Acquaintance

with C# programming language;

  • Loops/operators;
  • Type systems;
  • Applications build tools, .NET

framework compatibility with different operating systems;

  • Code versioning systems;
  • Code reviews;
  • Generic types and methods …

what is that?

slide-13
SLIDE 13

Course overview: 3, 4 lecture (1)

– Value types … what is that? – Reference types:

  • Classes and their interaction: fields, properties, methods, nested classes.

– Type conversions:

  • Allowed conversion (Widening, narrowing, implicit, and explicit, checked

keyword),

  • cast
  • Conversions of incompatible types
  • is and as
  • boxing and unboxing

– Common .NET interfaces:

  • IComparable, IComparer, IEquatable, IClonable, IEnumerable, IEnumerator
slide-14
SLIDE 14

Course overview: 3, 4 lecture (2)

– Creation of objects:

  • Lazy / object initializers / anonymous type /

equals – Extension methods – Typical OOP mistakes and how to avoid them – Object lifecycle – String type variables – Software system construction – Business needs analysis – Software system modification and maintenance

slide-15
SLIDE 15

Course overview: 5, 6 lecture (1)

  • Delegates: Action and Func
  • Anonymous methods
  • Lambda expressions
  • Events
  • Expression trees
  • Introduction to LINQ
  • Working with data
  • Collections
slide-16
SLIDE 16

Course overview: 5, 6 lecture (2)

slide-17
SLIDE 17

Course overview: 7, 8 lecture

– Working with databases – Introduction to ORM – Entity framework with .net core – Serialization – Attributes – Exceptions and their handling – Introduction to project management – Basics of Agile

slide-18
SLIDE 18

Course overview: 9,10 lecture

  • Web services:

– SOAP – GraphQL – gRPC – REST

  • Creating a web service using .net core
  • Introduction to multithreading
  • Async/await
slide-19
SLIDE 19

Course overview: 11,12 lecture

  • Improving application:

– Debug – Diagnostics and profiling – Events (operating system) – Configuration files

  • Testing:

– unit tests vs integration tests vs component test – Testing tools and strategies

  • Functional

and non-functional requirements for software systems

  • Use cases of interceptor and middleware in .NET Core

framework

slide-20
SLIDE 20

Course overview: 13,14 lecture

  • Introduction to creating and improving the user

experience

  • Introduction to graphical interface development
  • Presentation of the developed software system
slide-21
SLIDE 21

Course overview: 15,16 lecture

  • Introduction to design patterns (MQ, CQRS

etc.)

  • Analysis of modern OO systems
  • Preparation for the exam and taking the final

exam (written)

slide-22
SLIDE 22

Evaluation

  • Exam in written form (max 5.0)

– Test, semi open and open questions – Exam is considered to be passed if at least 1.5 out of 5 points are collected – Exam can be taken only when total amount of points collected during the semester is 3.0 or more

  • Laboratory assignments (max 5.0)

– Three (1.5 + 2.0 + 1.5)

  • Additional points (max 1.5)

– Kahoots during the lecture (<1.0). – Advance settlement of tasks (5.0 x 10%).

slide-23
SLIDE 23

VU, MIF, Programų sistemų katedra

slide-24
SLIDE 24

What's wrong with traditional teaching?

  • Failure to code in a team:

– Code reviews – Managing work tasks

  • Weak personal preparation:

– Lack of empathy – Lack of creativity – Minimalism (I do only what I am told to) – English

  • Teaching methods:

– One to everyone – All to all

slide-25
SLIDE 25

„You think education is expensive... Try estimating the cost of ignorance“ Howard Gardner

slide-26
SLIDE 26

What do we do?

  • Practise assignments:

– Smart saver – Support you locals – Comparison shopping engine

slide-27
SLIDE 27

First part of lab. work (1)

  • Official goal: to develop an app while working in groups while

using material covered in 1-7 lectures

  • Unofficial goal: to develop an app in Windows Forms, that has

basic functionality of assigned APP. Understand the usage of GitHub, coding in team principles. Learn to code review yourself and take the feedback when getting one.

  • Recommendations:

– Creating and using your own class, struct and enum (with flag(s), preferably). – Property (standard, indexed, auto-implemented) usage in struct and class. – Named and optional argument usage. – Extension method usage. – Reading from file.

slide-28
SLIDE 28

First part of lab. work (2)

  • Recommendations:

– Generic type usage. – Regex. – Widening and narrowing type conversions. – Putting data to collection, iterating through it the right way. – LINQ to Objects usage (methods and queries), including groupJoin. – Implementing some of the standard .NET interfaces (IEnumerable, IComparable, IComparer, IEquatable, IEnumerator, etc.)

slide-29
SLIDE 29

Second part of lab. work(1)

  • Official goal: continue developing an app while

working in groups while using material covered in 8-11 lectures

  • Unofficial

goal: implement web service(s) so functionality could be separated from UI. Deepen the functionality of application while being creative.

  • Recommendations:

– Lazy initialization. – Generics (in delegates, events and methods) – Delegates. – Events and their usage: standard and custom.

slide-30
SLIDE 30

Second part of lab. work(2)

  • Recommendations:

– Exceptions and dealing with them: standard and custom (and meaningful usage of those). – Variation and covariation usage (at least demonstration). – Anonymous methods. – Lambda expressions. – concurrent programming (threading or async/await (for your

  • wn written classes); common resource usage between

threads). – Config file usage (both - app and user). – Dependency Injection.

slide-31
SLIDE 31

Third part of lab. work

  • Official goal: continue developing an app while working in groups

while using material covered in 12-15 lectures (databases).

  • Unofficial goal: Make an actual smartphone UI, while thinking about

end-user experience. Deepen the functionality of application while being creative.

  • Recommendations:

– Prepare ER diagram and create the database (MS SQL, but not mandatory -

  • nly important to be able to integrate to your solution).

– Transfer/update data using DataTable and DataAdapter. – Select/insert/update/delete usage. – LINQ usage: Join, Group, Skip and Take, Aggregate function. – Entity Framework usage.

slide-32
SLIDE 32

Practice assignments (1)

  • Practice examination is being held during practice lessons.

Virtual examination (e.g via email) is not possible.

  • Every assignment that is done in time and without any flaws is

marked with maximum possible points

– Flaws make grade lower – It is always better to make adjustments as long as there are now flaws

  • Lateness leads to the decrease of the maximal assessment (2.0)

by 20% of every delayed week

  • Additional points are added to the assessment if the work is

presented before the deadline (no more than 10% of the final assessment and 5% for every preliminary week)

slide-33
SLIDE 33

Practice assignments(2)

  • During the practice assignment examination

lecturer makes sure that students understand and has ability to change the program.

  • When grading, lecturer checks if version

control was used and checks pull requests code reviews.

  • Students are informed about their mark in the

same lecture after the examination.

slide-34
SLIDE 34

Practice assignments(3)

slide-35
SLIDE 35

Practice assignments(4)

  • The point is "pretending" to write code as if you

were working for a company, rather than reporting to a university. So :

– Your code will be reviewed (pull requests), – Code will be long living after the lectures, – You dont want to be that person, whos name is being mentioned in the context of: „who coded this peace of nonsense???“, – Basically – you have to be happy with the code that you write.

slide-36
SLIDE 36

Practice assignments(5)

  • Results can always be checked online (kimutis.lt)
  • For TOP THREE students:

– Honor and glory☺ – Voucher to take Microsoft exam „98-361: Software Development Fundamentals “:

  • 100Eur worth, provided by DanskeBank

https://docs.microsoft.com/en-us/learn/certifications/exams/98-361#certification- exams

  • Top three teams will be rewarded as well.

– Prizes - TBD

slide-37
SLIDE 37

Practice assignments(7)

slide-38
SLIDE 38

Literature

  • Main: Andrew Troelsen. Pro C# 2010 and the .NET 4
  • Additional:

– J.Skeet. C# in Depth. – D.Clark. Beginning C# Object-Oriented Programming. – J.Purdum. Beginning Object-Oriented Programming with C#. – A.Hunt, D.Thomas. The pragmatic programmer: from journeyman to master. – Scott Allen - C# Fundamentals with Visual Studio 2015 https://app.pluralsight.com/library/courses/c-sharp-fundamentals-with- visual-studio-2015/table-of-contents

  • Preparation for exam 70-483:

– MCSD Certification Toolkit. Exam 70-483. Programming in C#. – Programming in C#. Exam Ref 70-483.

slide-39
SLIDE 39

Programming IDE

– Microsoft Visual Studio

  • Cummunity: recommended and FREE
  • Ultimate/Pro: Microsoft Imagine.

– JetBrains Rider

  • https://www.jetbrains.com/rider/

– JetBrains tools are free to MIF students

  • https://mif.vu.lt/itwiki/programine_iranga#jetbrains_ira

nkiai

slide-40
SLIDE 40

Spotify - https://spoti.fi/2kaSkPO Youtube - https://youtu.be/EbPKBDJVLtQ Apple Podcasts - https://apple.co/2lFgJgu Stitcher - https://www.stitcher.com/podcast/it- taburete/e/63615542

slide-41
SLIDE 41

Questions