Introduction to Information and Communication Technologies (Lab)
Demonstrate knowledge about the practical aspects of the computer systems.
Acquire knowledge of different features of Operating Systems and typing tools to achieve the ability for developing solutions of Engineering problems.
Justify time and resource allocation to complete the assigned task
Report the outcome of an experiment/task in a standard format.
Introduction to Information and Communication Technologies
The course of Introduction to information and communication technologies is planned to cover the basic areas of this field. The course starts with number Systems, Binary numbers, Boolean logic, History of the computer system, Basic Machine Organization, Computer Types According to Capability, Von Neumann Architecture, Algorithm definition, Types of Software, System Software, Application Software, Types of Software License, Programming paradigms and languages, Graphical Programming, Introduction to Computer Programming, Overview of Software Engineering and Information Technology, Operating system, Compilers, Computer networks, and the Internet, Computer graphics, AI, Social and legal issues in computers, Moore's Law, IC fabrication technologies.
The following tools may be used for conducting lab work;
Python, Microsoft Office, Basic Hardware, Basic Networking Hardware.Agile Software Development
The course of Agile software Development is planned to cover the basic areas of this field, the course starts with Brief
Introduction to Plan Driven Development, Methods and Processes, Introduction
and overview of agile methods, Agile Model, Agile Manifesto, Values of Agile Modeling, Principles of Agile
Modeling, Practices of Agile Modeling, Introduction to Extreme Programming (XP),
Concepts and values, XP Activities, Rules and Principles, XP Practices; Fine
Scale feedback, Pair programming, Continuous Process, Shared Understanding,
Test-driven development (TDD), Tools and frameworks for testing and mocking,
Introduction to Scrum, Role of Product Owner, Development Team, Events; Sprint,
Meetings, Extensions, Backlog refinement, Artifacts; Product backlog, sprint
backlog, Product Increment, Sprint Burndown Chart, Release Burndown chart, Scrum-ban,
Tooling, Limitations, Refactoring, Comparisons of iterative development and
architecture-centric/ design-driven development methods, Importance of TDD in
software development using dynamic languages, Test coverage monitoring,
Improving performance and quality.
Global Software Development
Global Software Development (GSD) is an advanced course in software engineering that embark students to develop the technical and organizational skills needed to practice software engineering in a globally distributed environment. The course gives an overview of the GSD paradigm and discusses concepts like benefits and risks related to Global Software Development, Software Development outsourcing on the basis of Geographic Location, and Relationship-based outsourcing, the course also covers different types and modes of software development outsourcing e.g. onshore, nearshore and offshore outsourcing. Moreover, Globalization issues in project management are also discussed in this course.
Computer Communication and Networks
This course is designed to provide students with an overview of the concepts and fundamentals of data communication and computer networks. Topics to be covered include data communication concepts and techniques in a layered network architecture, network topologies, communications switching and routing, types of communication, network model components, layered network models (OSI reference model, TCP/IP networking architecture) and their protocols, various types of networks (LAN, MAN, WAN and Wireless networks) and their protocols network layer routing, link layer multiple access protocols, MAC addresses and Ethernet, packet switching, circuit switching and physical technologies.
Operting Systems
The purpose of this course is to provide an overview of computer operating systems. Topics to be discussed include a brief history and evolution of Operating Systems, Operating System Structure, Services provided by OS, Process Concepts, Threads and Multithreading, CPU scheduling algorithms, and different Operating Systems Functionalities i.e. File management, Memory management, and secondary storage management, etc.
Human Computer Interaction
The course of Human-Computer Interaction is planned to cover the basic areas of this field, to provide a firm foundation for research in this area. The course starts with an introduction to HCI, human psychology, and its relation to computing. It then discusses the various interaction modes that are available at present and throws light on innovative user interfaces that are being researched. Afterward, the course links to software design principles and some recognized theories in this regard.
After the mid-term exams, the course is planned to teach about the requirements and design heuristics of an HCI-based software design. User research and user modeling are intended to be discussed over a period of two to three weeks in the semester, due to the immense significance of the users in this course. Finally, the course is winded up with some talk on the design synthesis and challenges in the context of HCI.
Database Systems
1. Explain the Fundamental Database Concepts
2. Design conceptual, logical and physical Database Schemas using different Data models.
3. Identify Functional Dependencies and resolve Database anomalies by normalizing database tables.
4. Structured Query Language (SQL) for Database definition and manipulation in any DBMS.
Formal Methods in Software Engineering
Course Objectives and Related Program Educational Objectives
In this course students learn how to represent computing systems with both state-based and process algebra models.
They specify computing systems formally, reason about specifications, and verify their properties. They connect specifications to program through refinement and decomposition.
They use theorem proving and model checking tools.
Object Oriented Programming SE 2nd Semester
This course introduces the concepts of object-oriented programming to students with a background in programming fundamentals using C++. The course begins with introduction to the object-oriented programming paradigm, focusing on the definition and use of classes along with the fundamentals of object-oriented design. Other topics include an overview of programming language principles, UML, simple analysis of algorithms, basic searching and sorting techniques, event-driven programming, memory management and an introduction to software engineering issues.
Software Requirements and Specifications
Software Development and Testing
Course Outline:
Basics of formal languages; syntax and semantics; grammars; Backus Naur
Form. Parsing; regular expressions and their relationship to state diagrams.
Lexical Analysis; tokens; more regular expressions and transition networks;
principles of scanners
Using tools to generate scanners; applications of scanners. Relation of scanners and compilers.
Parsing concepts; parse trees; context free grammars, LL Parsing
Overview of principles of programming languages. Criteria for selecting
programming languages and platforms.
Tools for automating software design and construction. Modeling system behavior with extended finite state machines. SDL Representing concurrency, and analyzing concurrent designs.
Sample labs and assignments:
- Use of software engineering tools to create designs
- Use of parser generators to generate languages
Testing Overview
Testing Types (Manual Testing, Automation testing)
Testing Methods (Block Box, White Box, Gray Box)
Levels of Testing (Functional Testing, Non Functional Testing)
Testing Documentation (Test Plan, Test Scenario, Test case, traceability matrices)
Testing Estimation Techniques (Functional Point analysis, Mark-II Method)
Computer Communication & Networks (LAB)
The Lab will give students a good understanding
of basic functions on which modern communication systems are built. It will be
a required basis for working in this area.
The following tools will be used for conducting lab work;
Packet Racer, Switch, Routers, Networking Cables and Connectors, MATLAB, Riverbed Modeler
Emperical Software Engineering
This course is for students who are interested in the empirical methods applied to the field of software engineering. The course introduces quantitative and qualitative evaluation methods in software engineering.
Software Process Improvement
All software engineering is based on one or more processes that guide how software is developed with particular time, cost or quality goals. Process improvement aims to learn from current practice and objectively assess potential improvements.
Object Oriented Programming Lab (Spring 2020)
This course has been compiled to
assist the conduct of practical classes for CS 151L “Object Oriented
Programming”. Practical work relevant to this course aims at introducing the
basic as well as advance
concepts of objects oriented programming using C++ language such as class,
object, inheritance,
multiple inheritance, polymorphism, function and operator overloading.
The Course
Profile of CS-503L “Object Oriented Programming” lays down the following Course
Learning,,Outcome:
CLO-X Practice
computer programming using object oriented paradigm (Lab work).
Lab Rubrics to
evaluate student performance have been provided.
Introduction to Software Engineering
1. Describe various software engineering processes and
activities
2. Apply the system modeling techniques to model a medium
size software system
3. Apply software quality assurance and testing principles to
medium size software system.
4. Discuss key principles and common methods for software
project management such as scheduling, size estimation,
cost estimation and risk analysis
Web Engineering
Web Engineering introduces a structured
methodology utilized in software engineering to Web development projects. The
course addresses the concepts, methods, technologies, and techniques of
developing Web sites that collect, organize and expose information resources.
Topics covered include design methods and technologies, interface design,
usability of web applications, accessibility, testing, operation and
maintenance of Web applications, security, and project management. Specific
technologies covered in this course include client-side (HTML, JavaScript, and
CSS) and server-side (PHP).