SE211 Software Construction

Print this page Please use the scale options of your printing settings for adjustments.

Course Code Course Title Weekly Hours* ECTS Weekly Class Schedule
T P
SE211 Software Construction 3 2 6 Tuesdays Noon-2:50 PM
Prerequisite CS103 It is a prerequisite to
Lecturer Kanita Karadjuzovic-Hadziabdic Office Hours / Room / Phone
Wednesday:
10:00-13:00
Thursday:
10:00-12:00
A F1.6
E-mail kanita@ius.edu.ba
Assistant Assistant E-mail edzaferovic@ius.edu.ba
Course Objectives This course introduces fundamental principles and techniques of software development. Starting with the fundamentals of digital computation, the course introduces the student to the hierarchy of abstractions leading up to modern bug-free, maintainable, extensible software. Topics include static checking, specifications, mutability and immutability, higher-order functions, testing, debugging, abstract data types, recursion, structured, object-oriented programming, functional, and concurrent programming. The hardware-software duality is emphasized through various software architectures.

This course is not about a specific language or a specific application. We will use many languages and several levels of abstraction. The course gives the fundamental elements that form the basis of digital computation. In the course of the semester, we will give examples from fixed automation, ladder logic, Turing Machines, machine language, assembly language, and other compiled and interpreted languages. This generalization and universality are made possible as software concepts are related back to the way hardware works. That is, software construction, in any possible language, current or future, will be based on the fundamental workings of the digital computer. Discussions will include possible extensions to future modes of computation other than digital computations.
Textbook T1 Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Barbara Liskov, John Guttag (2001), Addison-Wesley, ISBN 0-201-65768-6
Additional Literature
  • A1. Rob Miller, et al. (2013) Software Construction - Lecture Notes, MIT (http://web.mit.edu/6.031/www/fa18/)
  • A2. Intel 8080 Assembly Language Programming, Intel Corporation
  • A3. The C programming Language, Kernighan and Richie, AT&T Bell Laboratories
  • A4. Object-Oriented Programming With ANSI-C, Schreiner, ISBN 3-446-17426-5.
  • A5. Programmable Logic Controllers, Bolton
  • A6. Introduction to Languages and The Theory of Computation, Martin
  • A7. Designing Event-Driven Systems Concepts and Patterns for Streaming Services with Apache Kafka, Stopford
Learning Outcomes After successful  completion of the course, the student will be able to:
  1. Write code that is safe from bugs, easy to understand, and ready for change.
  2. Understand key software engineering ideas, including interfaces, specifications, invariants, abstract data types, design patterns, and testing.
  3. Apply software engineering ideas to design, implement, and test a small- to medium-scale software system.
  4. Understand general programming-language concepts such as static typing, exceptions, access control, interfaces, and equality, and ability to use Java as a particular example language with those concepts.
  5. Use modern programming tools (e.g. Eclipse, JUnit) and modern programming technologies (e.g. I/O, regular expressions, threads).
Teaching Methods Class discussions with examples. Active tutorial sessions for engaged learning and continuous feedback on progress. Assignments. Projects that involve literature surveys, real data, interpretation, and reporting.
Teaching Method Delivery Hybrid / blended Teaching Method Delivery Notes
WEEK TOPIC REFERENCE
Week 1 Introduction, orientation, approach
Week 2 Fundamental concepts, TM A5, A6
Week 3 Control, computation, and programming A5, A6
Week 4 Language A6
Week 5 Under the hood A2
Week 6 Compilers and toolchains A3, A4
Week 7 Midterm Examination
Week 8 Static Checking, Code Review A1.1, A1.3
Week 9 Testing, Avoiding Debugging, Specifications, Designing Specifications A1.4 to A1.7
Week 10 Debugging, ICE, LA A1.13
Week 11 Mutability and Immutability, Abstract Data Types, Abstract Functions and Invariants A1.8 to A1.10
Week 12 Interfaces and Enumerations, Recursion A1.11, A1.14
Week 13 Equality, Recursive Data Types A1.15, A1.16
Week 14 Basic Software Architectures A7
Week 15 Review
Assessment Methods and Criteria Evaluation Tool Quantity Weight Alignment with LOs
Final Exam 1 30 1,2,4
Semester Evaluation Compenents
Project 1 20 3,5
In-term examination 1 20 1,2
Homework assignments 10 30 2,4
***     ECTS Credit Calculation     ***
 Activity Hours Weeks Student Workload Hours Activity Hours Weeks Student Workload Hours
Lecture Hours 3 15 45 Active Tutorials 2 15 30
Home Studies 2 13 26 In-term Exam Study 11 1 11
Final Exam Study 12 1 12 Home Assignment Study 2 13 26
        Total Workload Hours = 150
*T= Teaching, P= Practice ECTS Credit = 6
Course Academic Quality Assurance: Semester Student Survey Last Update Date: 16/04/2021
QR Code for https://ecampus.ius.edu.ba/course/cs103-introduction-programming

Print this page Please use the scale options of your printing settings for adjustments.