This course is design to introduce fundamental principles and techniques of software development i.e.
• Easy to understand, error free and modifiable object oriented programs and small scale systems.
• To deal with code complexity, changeability, reusability.
To build individual programs as assignments and projects in teams to explicitly learn unit development and integration issues.


CLO: 1. Explain important concepts of code by design; object oriented design translations into object oriented code i.e. abstraction, modularity, and concurrency, software design patterns, error free programming, unit and integration testing, debugging, (C1-Knowledge)
CLO: 2. Select and apply appropriate object oriented programming to constructs; optimized, error free, and reusable, code as individual developer. (C3-Application)
CLO: 3. Design and develop a small software system as a team by using appropriate programming, testing, and integration tools and techniques. (C3-Application)


• Fundamental Programming Structures in Java: data types, variables, operators, strings, inputs and out puts, Control flow, Arrays,
• Classes & Objects; Class structures, using predefine classes, access specifies, instance variable, design Hints of message passing, methods, methods overloading, object Instantiation, Design hints of creational and structural pattern required
• Inheritance: Design hints i.e. creational, structural and behavior patterns and concepts implementation of inheritance, polymorphism, generic array list, reflection, interfaces & inner Classes, abstract classes & methods, template classes & methods,
• Event-based programming: Fundamentals of programming graphical user interfaces; graphic programming, event handling, user interface components with swings; view hierarchy, Composite pattern, Publish-Subscribe pattern, Model-View-Controller (MVC), Pitfalls of event-based programming
• Exceptions, Assertions, Logging, and Debugging: Dealing with errors, catching exceptions, using assertions, logging, debugging tips
• Deploying Applications: JAR Files, The manifest files, executable JAR files, Applets
• Collections: Collection interfaces, Concreate collections, the collection frameworks
• Multithreading: Thread states, thread property,Syncronization, Blocking queues,executor, thread pool pattern
• Specifications ; behavior equivalence, specification structure, null reference, Exceptions, Assertions, Logging, and Debugging
• Designing Specifications; deterministic vs undetermined specs, declarative vs operational specs, stronger vs weaker specs, designing good specifications, access controls
• Recursion and recursive data types
• Concurrency and threads safety
• Sockets & networking
• Team version control