The lab is design to introduce fundamental principles and techniques of software development; 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. for the development purpose students will have to implement programs using J2EE platforms


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)


• Creating development environment, 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, Concrete collections, the collection frameworks
• Multithreading: Thread states, thread property, Synchronization, 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