Development of Software Applications

Course Description

This course elaborates software engineering concepts, principles and techniques. The course studies approaches to the development of end user applications, including requirements analysis and specification, design and construction of software components, programming techniques, documentation, implementation and maintenance of applications.

Learning Outcomes

  1. Differentiate and define project lifecycle
  2. Reproduce adequate programming techniques
  3. Apply development tools and groupware
  4. Identify software requirements
  5. Design and create software components
  6. Produce user and program documentation
  7. Analyze user requirements
  8. Distinguish key software architecture concepts

Forms of Teaching

Lectures

Materials and presentations are on course web page.

Independent assignments

design and implementation of program solutions based on collected requirements

Laboratory

demonstrations of program solutions and tools

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Homeworks 50 % 60 % 50 % 60 %
Mid Term Exam: Written 0 % 20 % 0 %
Final Exam: Written 0 % 20 %
Exam: Written 50 % 40 %

Week by Week Schedule

  1. Software engineering basics. Software development lifecycle. Project planning.
  2. Software requirements elicitation. Requirements specification. Configuration management. Tools for software version control. Programming environments that automate parts of program construction processes (e.g., automated builds).
  3. Application frameworks. A brief overview of .NET platform and advanced C# features.
  4. Principles of secure design and coding. Defensive programming. Debugging strategies. Configuration files and logging.
  5. Programmatically access and modify data from/in a database using object relational mapping.
  6. Development of applications with graphical user interface. Separation of model, view, and controller. Development of a simple web-application with CRUD (Create, Read, Update, Delete) functions. Tabular representation with server-side support for paging and sorting.
  7. Development of a simple web-application with CRUD (Create, Read, Update, Delete) functions. Events and event handlers. Defining event handlers/listeners. Data validation techniques.
  8. Midterm exam
  9. Implementation of typical data relationships and operations: filtering, sorting, paging, specialization and generalization, master-detail example.
  10. Implementation of typical data relationships and operations: filtering, sorting, paging, specialization and generalization, master-detail example.
  11. Reflection. Testing.
  12. Software reuse. Web services.
  13. Software reuse. Web services.
  14. Software reuse. Simple refactoring. Command Query separation.
  15. Final exam

Study Programmes

University undergraduate
Free Elective Courses (5. semester)
Free Elective Courses (5. semester)
[FER2-HR] Software Engineering and Information Systems - module
(5. semester)

Literature

(.), Materijali predmeta dostupni na fakultetskom intranetu,
Roger Pressman, Bruce Maxim (2014.), Software Engineering: A Practitioner's Approach, McGraw-Hill Education
Ian Sommerville (2015.), Software Engineering, Pearson
Steve McConnell (2004.), Code Complete, Pearson Education
Stephen Schach (2010.), Object-Oriented and Classical Software Engineering, McGraw-Hill Education
Andrew Troelsen, Philip Japikse (2022.), Pro C# 10 with .NET 6, Apress
Robert C. Martin (2008.), Clean Code, Pearson Education
Robert C. Martin (2011.), The Clean Coder, Pearson Education

Laboratory exercises

For students

General

ID 229839
  Winter semester
5 ECTS
L2 English Level
L1 e-Learning
45 Lectures
0 Seminar
0 Exercises
6 Laboratory exercises
0 Project laboratory

Grading System

85 Excellent
70 Very Good
60 Good
50 Sufficient