Course Code: Cosc239 Credit Hours: 3+lab Lecture Hours: 2 Laboratory Hours: 2 Prerequisites: Cosc132
Course Code: Cosc239 Credit Hours: 3+lab Lecture Hours: 2 Laboratory Hours: 2 Prerequisites: Cosc132
Course Code: Cosc239 Credit Hours: 3+lab Lecture Hours: 2 Laboratory Hours: 2 Prerequisites: Cosc132
FACULTY OF INFORMATICS
DEPARTMENT OF COMPUTER SCIENCE
COURSE OUTLINE
Assessment Methods:
Assessment Methods Points
Test 1 10%
Test 2 10%
Individual or group assignment 10%
Presentation of individual/group work 10%
Class activity and participation 10%
Final Exam 50%
Grand total 100%
Textbook
- Steven Holzner: “Visual Basic .Net Programming Black Book”, Dream Tech Press.
References
- Jeffrey R. Shapiro: “Visual Basic.Net”, Tata McGraw Hill, 2007.
- McCarter David: “Visual Basic.Net Complete”, APRESS, USA.
- Willis Crossland Blair: “Beginning VB.Net 2003”, Dream Tech Press.
ADMAS UNIVERSITY
FACULTY OF INFORMATICS
DEPARTMENT OF COMPUTER SCIENCE
COURSE OUTLINE
Course Title: Object-Oriented Software Engineering
Course Code: CoSc348
Credit Hours: 3 Lecture Hours: 3
Laboratory Hours: - Prerequisites: CoSc 343
Course Description
This course covers the concepts, skills, and techniques of object-oriented systems analysis
and design. It covers methodologies such as prototyping, task management, data
management, object-oriented project management. The focus is on the project planning and
analysis phases of the software development process using the Rational Unified
Methodology and the Unified Modeling Languages. Students will create the artifacts and
diagrams necessary to complete a feasibility analysis, project work plans and estimates, and
system proposals.
Course Objectives
At the end of the course, students will
▪ describe and use software modeling artifacts like use case, sequence diagram, and
activity diagram,
▪ be able to develop models using the UML notation,
▪ relate analysis and design artifacts,
▪ apply an iterative agile process,
▪ be able to analyze requirements with use cases,
▪ be able to create domain models,
▪ describe system testing techniques and methods,
▪ design object solutions with patterns and architectural layers, and
▪ document and present project deliverables.
Course Content
Chapter 1: Introduction to Object-Oriented Analysis and Design (OOAD)
1.1 Software development life cycle
1.2 What is UML and its history
1.3 What is OOAD?
Chapter 2: Object-Oriented Analysis
2.1 Requirement gathering.
2.2 Requirement modeling
2.3 Formulate alternative solutions
2.4 System modeling (Use case modeling, Sequence diagram, Activity diagram)
2.5 User interface prototyping
Chapter 3: Logical Architecture
3.1 What is a logical architecture?
3.2 UML Package Diagrams
Chapter4: Object-Oriented Design
4.1 Layering classes
4.2 Design models
4.3 Persistence Models
4.4 Component and Deployment diagrams
Chapter 5: Design Patterns
Chapter6: Implementation and Testing
6.1 System Implementation
6.2 System Testing
Teaching Methods
- Lecture, Project
Assessment Methods:
Assessment Methods Points
Test 1 10%
Test 2 10%
Individual or group assignment 10%
Presentation of individual/group work 10%
Class activity and participation 10%
Final Exam 50%
Grand total 100%
Textbook
- Bernd Bruegge and Allen H. Dutoit:“Object-Oriented Software Engineering
Conquering Complexity and Changing Systems”, Prentice Hall, 2000.
References
- Craig Larman:“Applying UML and Patterns”, Prentice Hall, 2005.
- G. Booch, J.Rumbaugh, and I. Jacobson:“The Unified Modeling Language User
Guide”, 2nd edition, Addison Wesley, 2005.
- Jim Arlow and Ila Neustadt:“UML2 and the Unified Process”, Addison Wesley, 2005.
- Jacobson:“Object-Oriented Software Engineering: A use-case driven Approach”.
ADMAS UNIVERSITY
FACULTY OF INFORMATICS
DEPARTMENT OF COMPUTER SCIENCE
COURSE OUTLINE
Course Title: Software Project Management
Course Code: CoSc 441
Credit Hours: 3 Lecture Hours: 3
Laboratory Hours: - Prerequisites: CoSc343
Course Description
Concepts and issues of software project management and the practical benefits of project
planning and management together with resource management; project planning and
management, estimation models and techniques, software project scheduling; software
project tracking, metrics, and system performance evaluation; managing expectations of
managers, clients, team members, and others; determining skill requirements and staffing;
cost-effectiveness analysis; reporting and presentation techniques; management of
behavioral and technical aspects of a software project; change management; software tools
for project tracking and monitoring, team collaboration techniques and tools.
Course Objectives
At the end of the course, students will be able to
▪ develop a comprehensive software project plan,
▪ estimate costs for a software project,
▪ measure software project progress, productivity, and other aspects of the software
development process,
▪ understand risk management and dynamically adjust project plans,
▪ apply change management processes, and
▪ use standards in project management.
Course Content
Chapter 1: Introduction to Software Project Management
1.1 Software Project Management Basics
1.2 Role of a Software Project Manager
1.3 Software Project Resources
1.4 Phases of a Software Project
Chapter 2: Introduction to PERT/CPM
2.1 Work Breakdown Structure
2.2 Network diagramming
2.3 Critical Path
2.4 PERT Probability
2.5 Crashing
2.6 Resource Leveling
Chapter 3: Software Effort Estimation
3.1 Estimation Basics
3.2 LOC Method
3.3 Function Points
3.4 Activity Based Estimation
3.5 COCOMO
3.6 Uncertainty in estimation
Chapter 4: Software Project Planning
4.1 Management
4.2 Risk
4.3 Configuration
4.4 Quality Assurance
4.5 Induction
4.6 Schedule
Chapter 5: Configuration Management
5.1 Configuration Management Basics
5.2 Environment for Configuration Control
5.3 Configuration Control vs. Version Control
5.4 Code Management
5.5 Change Management
5.6 Information Management
Chapter 6: Quality Assurance in Software Projects
6.1 Quality Basics
6.2 Quality Assurance Activities in Software Projects (standards and processes)
6.3 Quality Control Activities in Software Projects (Verification, Validation,
Quality Metrics)
6.4 Introduction to ISO 9000, SEI – CMM Maturity Levels, Six Sigma
Chapter 7: Productivity Aspects
7.1 Productivity Basics
7.2 Productivity Measurement and Metrics
Chapter 8: Human Factors and Leadership
8.1 Motivation
8.2 Communication
8.3 Handling Difficult People
8.4 Leadership
8.5 Team Dynamics
Chapter 9: Progress Tracking and Control
9.1 Progress Evaluationand Reporting
9.2 Scope Management
9.3 Risk Mitigation
Chapter 10: Software Project Closeout
10.1 Software Project post-mortem
10.2 Collection of re-usable Components
10.3 Draw lessons from the good and bad Practices of the Software Project
10.4 Project-End Audit
Chapter 11: Organizational Support for Effective Software Project Management
11.1 Recognition as a Specialist Discipline
11.2 Organize Knowledge Repository
11.3 Processes, Standards and Guidelines
11.4 Training
Teaching Methods
- Lecture, Assignment
Assessment Methods:
Assessment Methods Points
Test 1 10%
Test 2 10%
Individual or group assignment 10%
Presentation of individual/group work 10%
Class activity and participation 10%
Final Exam 50%
Textbook
- Olson, David L.: “Introduction to Information Management Systems”, 2001.
References
- K. Schwalbe: “Information Technology Project Management”, 3rd edition, Thompson,
2003.
- S. Humphrey: “Managing the Software Process”, Addison-Wesley, 1989.
- N. Whitten: “Managing Software Development Projects: Formula for Success”, 2nd
edition, Wiley, 1995.
ADMAS nnbnjkio
FACULTY OF INFORMATICS
DEPARTMENT OF COMPUTER SCIENCE
COURSE OUTLINE
Course Title:Formal Language Theory
Course Code: CoSc471
Credit Hours: 3 Lecture Hours: 3
Laboratory Hours: - Prerequisites: CoSc 212
Course Description
The course aims to develop the theoretical foundations of computer science through study of
mathematical and abstract models of computers and the theory of formal languages and use
of various abstract machines. Topics to be covered include: introduction to the theory of
computation (sets, functions and relations, graphs and trees, languages, grammars,
automata); finite automata (deterministic and nondeterministic finite automata, equivalence
of deterministic and non-deterministic finite automata, reducing number of states in finite
automata); regular languages and regular grammars (regular expressions, connection
between regular expressions and regular languages, regular grammars); context free
languages (context free grammars, parsing and ambiguity, context free grammars and
programming languages); simplification of context free grammars and normal forms; push
down automata (nondeterministic push down automata, push down automata and context
free languages, deterministic push down automata and deterministic context free languages).
Course Objectives
At the end of the course, students will
▪ know the concepts formal languages, formal grammars, and automata,
▪ be introduced to the mathematical notation of sets, graphs, and trees,
▪ understand about (Finite) Automata concepts,
▪ study and understand about grammars, languages and normal forms, and
▪ be introduced to the mechanism of Turing Machine.
Course Content
Chapter 1: Basics
1.1 Overview of languages: natural vs. formal
1.2 Review of set theory and relations (definition, operations, cardinality and
countability)
1.3 Relations and functions (basic definition of relations, equivalence relation;
functions: into, onto, one-to-one, bijective)
1.4 Mathematical induction
1.5 Graphs and trees
1.6 Strings and languages
Chapter 2: Introduction to Grammars
2.1 Grammars (introduction)
2.2 Phrase Structure Grammar (PSG) and language; derivation
Chapter 3: Regular Languages
3.1 Regular grammars (regular languages and properties, transition diagrams)
3.2 Automata (characteristics and types of automata)
3.3 Finite State Automata (FSA)
3.4 DFSA (String acceptance by DFSA)
3.5 NFSA (String acceptance by NFSA)
3.6 Equivalence of DFSA and NFSA
3.7 FSA with lambda moves (String acceptance by FSA with lambda moves)
3.8 Regular Expressions - identities for regular expressions
3.9 Equivalence of DFSA, NFSA, and RE
3.10 Minimization of DFSA (construction of minimal DFSA)
3.11 Identification of non-regular languages
Chapter 4: Context Free Languages
4.1 Context Free Grammars (Derivation Tree, Context free Languages, Ambiguity
in grammars)
4.2 Parsing arithmetic expressions
4.3 Removing lambda productions
4.4 Normal Forms (NFs) - Chomsky NF (CNF), Conversion to CNF, Pumping
lemma for CFLs
4.5 GreibachNF (GNF)
4.6 A membership algorithm for CFGs (CYK algorithm)
Chapter 5: Push Down Automata
5.1 Non-deterministic pushdown automata (NPDA) (instantaneous description,
languages accepted by NPDA)
5.2 Deterministic pushdown automata (DPDA) - languages accepted by DPDA
Teaching Methods
- Lecture, Assignments
Assessment Methods:
Assessment Methods Points
Test 1 10%
Test 2 10%
Individual or group assignment 10%
Presentation of individual/group work 10%
Class activity and participation 10%
Final Exam 50%
Textbook
- Peter Linz: “An Introduction to Formal Languages and Automata”, D. C. Heath and
Company.
References
- K. L. P. Mishra and N. Chandrasekaran: “Theory of Computer Science (Automata,
Languages and Computation)”, Prentice Hall of India, 2nd edition, 2003.
- D. C. Kozen: “Automata and Computability”, Springer Verlag, 1997.
- J. E. Hopcroft, J. D. Ullman, and R. Motwani: “Introduction to Automata, Theory,
Languages and Computation”, 2nd edition, Addison-Wesley, 2001.
- M. Sipser: “Introduction to the Theory of Computation”, PWS Publishing Company,
1997.