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 Mon 16:00 - 16:50, Wed 14:00 - 15:50, AF1.26
Prerequisite CS103 It is a prerequisite to
Lecturer Haris Kremo Office Hours / Room / Phone
E-mail hkremo@ius.edu.ba
Assistant Muhammed Musanovic Assistant E-mail musanovic10@gmail.com
Course Objectives This course introduces fundamental principles and techniques of software development, i.e., how to write software that is safe from bugs, easy to understand, and ready for change. Topics include static checking; specifications; mutability and immutability; testing; debugging; abstract data types; recursion; design patterns for object-oriented programming; concurrent programming and functional programming with immutable data and higher-order functions.
Textbook 1. Rob Miller, et al. (2013) Software Construction - Lecture Notes, MIT (http://web.mit.edu/6.031/www/fa18/) 2. Barbara Liskov, John Guttag (2001) Program Development in Java: Abstraction, Specification, and Object-Oriented Design, Addison-Wesley, ISBN 0-201-65768-6
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 lecturing and discussions with examples. Active laboratory sessions for engaged learning and continuous feedback on progress. Home assignments for analyzing the obtained knowledge in the classes.
WEEK TOPIC REFERENCE
Week 1 Static Checking: Static Typing, Snapshot Diagrams, Properties of Good Software Lecture 1
Week 2 Code Review: Style Standards, Code Smells, Global Variables, Coherent Methods Lecture 3
Week 3 Testing: Choosing Test Cases, Blackbox and Whitebox Testing, Coverage, Regression Testing Lecture 4
Week 4 Specifications: Preconditions and Postconditions, Tests for Specifications, Exceptions Lecture 6
Week 5 Designing Specifications: Deterministic and Underdetermined, Declarative and Operational Lecture 7
Week 6 Mutability and Immutability: Mutable Objects, Aliasing, Immutability Lecture 8
Week 7 Midterm
Week 8 Avoiding Debugging: Assertions, Incremental Development, Modularity and Encapsulation Lecture 5
Week 9 Abstract Data Types: Abstruction, Designing Abstract Types, Representation Independence Lecture 9
Week 10 Abstract Functions and Invariants: Interfaces, Invariants, Abstract Functions Lecture 10
Week 11 Interfaces and Enumerations: Interfaces, Subtypes, Generic Interfaces, Enumerations Lecture 11
Week 12 Debugging: Finding Bug Using the Scientific Method, Fixing the Bug Lecture 13
Week 13 Recursion: Decomposition, Helper Methods, Recursive Problems and Data, Mutual Recursions Lecture 14
Week 14 Equality: Equivalence Relation, Equality of Mutable and Immutable Objects Lecture 15
Week 15 Recursive Data Types: Writing a Program with ADTs Lecture 16
Assessment Methods and Criteria Evaluation Tool Quantity Weight Alignment with LOs
Final Exam 1 35 1,2,4
Semester Evaluation Compenents
Project 1 30 3,5
In-term examination 1 20 1,2
Homework assignments 3 15 2,4
***     ECTS Credit Calculation     ***
 Activity Hours Weeks Student Workload Hours Activity Hours Weeks Student Workload Hours
Lecture Hours 3 15 45 In-term Exam Study 12 1 12
Active Tutorials 2 15 30 Final Exam Study 18 1 18
Home Studies 2 15 30 Home Assignment Study 5 3 15
        Total Workload Hours = 150
*T= Teaching, P= Practice ECTS Credit = 6
Course Academic Quality Assurance: Semester Student Survey Last Update Date: 21/02/2020
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.