Thursday, February 17, 2011

Computational Science and Numerical Methods


Computational Science and Numerical Methods (CN) (4%) For Computer Science Students


   CN1. Numerical analysis [elective]
   CN2. Operations research [elective]
 

Recommended Books:
1.    Numerical Analysis by S. A. Butti
2.    Operation Research by Taha, Hamdy A

From the earliest days of the discipline, numerical methods and the techniques of scientific computing have constituted a major area of computer science research. As computers increase in their problem-solving power, this area -- like much of the discipline -- has grown in both breadth and importance. At the end of the millennium, scientific computing stands as an intellectual discipline in its own right, closely related to but nonetheless distinct from computer science.
Although courses in numerical methods and scientific computing are extremely valuable components of an undergraduate program in computer science, the CC2001 Task Force believes that none of the topics in this area represent core knowledge. From our surveys of curricula and interaction with the computer science education community, we are convinced no consensus exists that this material is essential for all CS undergraduates. It remains a vital part of the discipline, but need not be a part of every program.
For those who choose to pursue it, this area offers exposure to many valuable ideas and techniques, including precision of numerical representation, error analysis, numerical techniques, parallel architectures and algorithms, modeling and simulation, and scientific visualization. At the same time, students who take courses in this area have an opportunity to apply these techniques in a wide range of application areas, such as the following:
  • Molecular dynamics
  • Fluid dynamics
  • Celestial mechanics
  • Economic forecasting
  • Optimization problems
  • Structural analysis of materials
  • Bioinformatics
  • Computational biology
  • Geologic modeling
  • Computerized tomography
CN1. Numerical analysis [3%][elective]
Topics:
  • Floating-point arithmetic
  • Error, stability, convergence
  • Taylor's series
  • Iterative solutions for finding roots (Newton's Method)
  • Curve fitting; function approximation
  • Numerical differentiation and integration (Simpson's Rule)
  • Explicit and implicit methods
  • Differential equations (Euler's Method)
  • Linear algebra
  • Finite differences
Learning objectives:
  1. Compare and contrast the numerical analysis techniques presented in this unit.
  2. Define error, stability, machine precision concepts and the inexactness of computational approximations.
  3. Identify the sources of inexactness in computational approximations.
  4. Design, code, test, and debug programs that implement numerical methods.
CN2. Operations research [1%] [elective]
Topics:
  • Linear programming
    • Integer programming
    • The Simplex method
  • Probabilistic modeling
  • Queuing theory
    • Petri nets
    • Markov models and chains
  • Optimization
  • Network analysis and routing algorithms
  • Prediction and estimation
    • Decision analysis
    • Forecasting
    • Risk management
    • Econometrics, microeconomics
    • Sensitivity analysis
  • Dynamic programming
  • Sample applications
  • Software tools
Learning objectives:
  1. Apply the fundamental techniques of operations research.
  2. Describe several established techniques for prediction and estimation.
  3. Design, code, test, and debug application programs to solve problems in the domain of operations research. 

Software Engineering


Software Engineering (SE) (10%) For Computer Science Students


   SE1. Software design [core]
   SE2. Using APIs [core]
   SE3. Software processes [core]
   SE4. Software requirements and specifications [core]
   SE5. Software validation [core]
   SE6. Software evolution [core]
   SE7. Software project management [core]


   Recommended Books:
1.    Software Engineering by R.S. Pressman (This book has wide coverage of SE topics.)
2.    Software Engineering by Somerville (The book emphasizes on practical SE )

 Software engineering is the discipline concerned with the application of theory, knowledge, and practice for effectively and efficiently building software systems that satisfy the requirements of users and customers. Software engineering is applicable to small, medium, and large-scale systems. It encompasses all phases of the life cycle of a software system. The life cycle includes requirement analysis and specification, design, construction, testing, and operation and maintenance.
Software engineering employs engineering methods, processes, techniques, and measurement. It benefits from the use of tools for managing software development; analyzing and modeling software artifacts; assessing and controlling quality; and for ensuring a disciplined, controlled approach to software evolution and reuse. Software development, which can involve an individual developer or a team of developers, requires choosing the tools, methods, and approaches that are most applicable for a given development environment.
The elements of software engineering are applicable to the development of software in any computing application domain where professionalism, quality, schedule, and cost are important in producing a software system.

SE1. Software design [2%][core]
Minimum core coverage time: 8 hours
Topics:
  • Fundamental design concepts and principles
  • Design patterns
  • Software architecture
  • Structured design
  • Object-oriented analysis and design
  • Component-level design
  • Design for reuse
Learning objectives:
  1. Discuss the properties of good software design.
  2. Compare and contrast object-oriented analysis and design with structured analysis and design.
  3. Evaluate the quality of multiple software designs based on key design principles and concepts.
  4. Select and apply appropriate design patterns in the construction of a software application.
  5. Create and specify the software design for a medium-size software product using a software requirement specification, an accepted program design methodology (e.g., structured or object-oriented), and appropriate design notation.
  6. Conduct a software design review using appropriate guidelines.
  7. Evaluate a software design at the component level.
  8. Evaluate a software design from the perspective of reuse.
SE2. Using APIs [1%] [core]
Minimum core coverage time: 5 hours
Topics:
  • API programming
  • Class browsers and related tools
  • Programming by example
  • Debugging in the API environment
  • Introduction to component-based computing
Learning objectives:
  1. Explain the value of application programming interfaces (APIs) in software development.
  2. Use class browsers and related tools during the development of applications using APIs.
  3. Design, implement, test, and debug programs that use large-scale API packages.
Minimum core coverage time: 2 hours
Topics:
  • Software life-cycle and process models
  • Process assessment models
  • Software process metrics
Learning objectives:
  1. Explain the software life cycle and its phases including the deliverables that are produced.
  2. Select, with justification the software development models most appropriate for the development and maintenance of a diverse range of software products.
  3. Explain the role of process maturity models.
  4. Compare the traditional waterfall model to the incremental model, the object-oriented model, and other appropriate models.
  5. For each of various software project scenarios, describe the project's place in the software life cycle, identify the particular tasks that should be performed next, and identify metrics appropriate to those tasks.

SE4. Software requirements and specifications [3%] [core]
Minimum core coverage time: 4 hours
Topics:
  • Requirements elicitation
  • Requirements analysis modeling techniques
  • Functional and nonfunctional requirements
  • Prototyping
  • Basic concepts of formal specification techniques
Learning objectives:
  1. Apply key elements and common methods for elicitation and analysis to produce a set of software requirements for a medium-sized software system.
  2. Discuss the challenges of maintaining legacy software.
  3. Use a common, non-formal method to model and specify (in the form of a requirements specification document) the requirements for a medium-size software system.
  4. Conduct a review of a software requirements document using best practices to determine the quality of the document.
  5. Translate into natural language a software requirements specification written in a commonly used formal specification language.
 SE5. Software validation [1%] [core]
Minimum core coverage time: 3 hours
Topics:
  • Validation planning
  • Testing fundamentals, including test plan creation and test case generation
  • Black-box and white-box testing techniques
  • Unit, integration, validation, and system testing
  • Object-oriented testing
  • Inspections
Learning objectives:
  1. Distinguish between program validation and verification.
  2. Describe the role that tools can play in the validation of software.
  3. Distinguish between the different types and levels of testing (unit, integration, systems, and acceptance) for medium-size software products.
  4. Create, evaluate, and implement a test plan for a medium-size code segment.
  5. Undertake, as part of a team activity, an inspection of a medium-size code segment.
  6. Discuss the issues involving the testing of object-oriented software.
Minimum core coverage time: 3 hours
Topics:
  • Software maintenance
  • Characteristics of maintainable software
  • Reengineering
  • Legacy systems
  • Software reuse
Learning objectives:
  1. Identify the principal issues associated with software evolution and explain their impact on the software life cycle.
  2. Discuss the challenges of maintaining legacy systems and the need for reverse engineering.
  3. Outline the process of regression testing and its role in release management.
  4. Estimate the impact of a change request to an existing product of medium size.
  5. Develop a plan for re-engineering a medium-sized product in response to a change request.
  6. Discuss the advantages and disadvantages of software reuse.
  7. Exploit opportunities for software reuse in a given context.
Minimum core coverage time: 3 hours
Topics:
  • Team management
    • Team processes
    • Team organization and decision-making
    • Roles and responsibilities in a software team
    • Role identification and assignment
    • Project tracking
    • Team problem resolution
  • Project scheduling
  • Software measurement and estimation techniques
  • Risk analysis
  • Software quality assurance
  • Software configuration management
  • Project management tools
Learning objectives:
  1. Demonstrate through involvement in a team project the central elements of team building and team management.
  2. Prepare a project plan for a software project that includes estimates of size and effort, a schedule, resource allocation, configuration control, change management, and project risk identification and management.
  3. Compare and contrast the different methods and techniques used to assure the quality of a software product. 

Net-Centric Computing

Net-Centric Computing (NC) (9%) For Computer Science Students


   NC1. Introduction to net-centric computing [core]
   NC2. Communication and networking [core]
   NC3. Network security [core]
   NC4. web-client/server computing  [core]
   NC9. Wireless and mobile computing [elective]



Recommended Books:
1.    Computer Networks by Andrew S. Tanenbaum
2.    Data & Computer Communications by Williams Stallings

Recent advances in computer and telecommunications networking, particularly those based on TCP/IP, have increased the importance of networking technologies in the computing discipline. Net-centric computing covers a range of sub-specialties including: computer communication network concepts and protocols, multimedia systems, Web standards and technologies, network security, wireless and mobile computing, and distributed systems.
Mastery of this subject area involves both theory and practice. Learning experiences that involve hands-on experimentation and analysis are strongly recommended as they reinforce student understanding of concepts and their application to real-world problems. Laboratory experiments should involve data collection and synthesis, empirical modeling, protocol analysis at the source code level, network packet monitoring, software construction, and evaluation of alternative design models. All of these are important concepts that can best understood by laboratory experimentation.

NC1. Introduction to net-centric computing [1%][core]
Minimum core coverage time: 2 hours
Topics:
  • Background and history of networking and the Internet
  • Network architectures
  • The range of specializations within net-centric computing
    • Networks and protocols
    • Networked multimedia systems
    • Distributed computing
    • Mobile and wireless computing
Learning objectives:
  1. Discuss the evolution of early networks and the Internet.
  2. Demonstrate the ability to use effectively a range of common networked applications including e-mail, telnet, FTP, newsgroups, and web browsers, online web courses, and instant messaging.
  3. Explain the hierarchical, layered structure of typical network architecture.
  4. Describe emerging technologies in the net-centric computing area and assess their current capabilities, limitations, and near-term potential.
Minimum core coverage time: 7 hours
Topics:
  • Network standards and standardization bodies
  • The ISO 7-layer reference model in general and its instantiation in TCP/IP
  • Circuit switching and packet switching
  • Streams and datagrams
  • Physical layer networking concepts (theoretical basis, transmission media, standards)
  • Data link layer concepts (framing, error control, flow control, protocols)
  • Internetworking and routing (routing algorithms, internetworking, congestion control)
  • Transport layer services (connection establishment, performance issues)
Learning objectives:
  1. Discuss important network standards in their historical context.
  2. Describe the responsibilities of the first four layers of the ISO reference model.
  3. Discuss the differences between circuit switching and packet switching along with the advantages and disadvantages of each.
  4. Explain how a network can detect and correct transmission errors.
  5. Illustrate how a packet is routed over the Internet.
  6. Install a simple network with two clients and a single server using standard host-configuration software tools such as DHCP.
   NC3. Network security [1%] [core]
Minimum core coverage time: 3 hours
Topics:
  • Fundamentals of cryptography
  • Secret-key algorithms
  • Public-key algorithms
  • Authentication protocols
  • Digital signatures
  • Examples
Learning objectives:
  1. Discuss the fundamental ideas of public-key cryptography.
  2. Describe how public-key cryptography works.
  3. Distinguish between the use of private- and public-key algorithms.
  4. Summarize common authentication protocols.
  5. Generate and distribute a PGP key pair and use the PGP package to send an encrypted e-mail message.
  6. Summarize the capabilities and limitations of the means of cryptography that are conveniently available to the general public.
NC4. Web-client/server computing [2%] [core]
Minimum core coverage time: 3 hours
Topics:
  • Web technologies
    • Server-side programs
    • Common gateway interface (CGI) programs
    • Client-side scripts
    • The applet concept
  • Characteristics of web servers
    • Handling permissions
    • File management
    • Capabilities of common server architectures
  • Role of client computers
  • Nature of the client-server relationship
  • Web protocols
  • Support tools for web site creation and web management
  • Developing Internet information servers
  • Publishing information and applications
Learning objectives:
  1. Explain the different roles and responsibilities of clients and servers for a range of possible applications.
  2. Select a range of tools that will ensure an efficient approach to implementing various client-server possibilities.
  3. Design and build a simple interactive web-based application (e.g., a simple web form that collects information from the client and stores it in a file on the server).
Topics:
  • Overview of the history, evolution, and compatibility of wireless standards
  • The special problems of wireless and mobile computing
  • Wireless local area networks and satellite-based networks
  • Wireless local loops
  • Mobile Internet protocol
  • Mobile aware adaption
  • Extending the client-server model to accommodate mobility
  • Mobile data access: server data dissemination and client cache management
  • Software package support for mobile and wireless computing
  • The role of middleware and support tools
  • Performance issues
  • Emerging technologies
Learning objectives:
  1. Describe the main characteristics of mobile IP and explain how differs from IP with regard to mobility management and location management as well as performance.
  2. Illustrate (with home agents and foreign agents) how e-mail and other traffic is routed using mobile IP.
  3. Implement a simple application that relies on mobile and wireless data communications.
Describe areas of current and emerging interest in wireless and mobile computing, and assess the current capabilities, limitations, and near-term potential of each. 

Information Management

Information Management (IM) (12%) For Computer Science Students


   IM1. Information models and systems [core]
   IM2. Database systems [core]
   IM3. Data modeling [core]
   IM4. Relational databases [elective]
   IM5. Database query languages [elective]
   IM6. Relational database design [elective]
   

Recommended Books:
1.    Database Systems by C.J. Date
2.    Modern Database Management by Fred R McFadden & Jeffry A. Hoffer

Information Management (IM) plays a critical role in almost all areas where computers are used. This area includes the capture, digitization, representation, organization, transformation, and presentation of information; algorithms for efficient and effective access and updating of stored information, data modeling and abstraction, and physical file storage techniques. It also encompasses information security, privacy, integrity, and protection in a shared environment. The student needs to be able to develop conceptual and physical data models, determine what IM methods and techniques are appropriate for a given problem, and be able to select and implement an appropriate IM solution that reflects all suitable constraints, including scalability and usability.

IM1. Information models and systems [1%] [core]
Minimum core coverage time: 3 hours
Topics:
  • History and motivation for information systems
  • Information storage and retrieval (IS&R)
  • Information management applications
  • Information capture and representation
  • Analysis and indexing
  • Search, retrieval, linking, navigation
  • Information privacy, integrity, security, and preservation
  • Scalability, efficiency, and effectiveness
Learning objectives:
  1. Compare and contrast information with data and knowledge.
  2. Summarize the evolution of information systems from early visions up through modern offerings, distinguishing their respective capabilities and future potential.
  3. Critique/defend a small- to medium-size information application with regard to its satisfying real user information needs.
  4. Describe several technical solutions to the problems related to information privacy, integrity, security, and preservation.
  5. Explain measures of efficiency (throughput, response time) and effectiveness (recall, precision).
  6. Describe approaches to ensure that information systems can scale from the individual to the global.
Minimum core coverage time: 3 hours
Topics:
  • History and motivation for database systems
  • Components of database systems
  • DBMS functions
  • Database architecture and data independence
  • Use of a database query language
Learning objectives:
  1. Explain the characteristics that distinguish the database approach from the traditional approach of programming with data files.
  2. Cite the basic goals, functions, models, components, applications, and social impact of database systems.
  3. Describe the components of a database system and give examples of their use.
  4. Identify major DBMS functions and describe their role in a database system.
  5. Explain the concept of data independence and its importance in a database system.
  6. Use a query language to elicit information from a database.
IM3. Data modeling [2%] [core]
Minimum core coverage time: 4 hours
Topics:
  • Data modeling
  • Conceptual models (including entity-relationship and UML)
  • Object-oriented model
  • Relational data model
Learning objectives:
  1. Categorize data models based on the types of concepts that they provide to describe the database structure -- that is, conceptual data model, physical data model, and representational data model.
  2. Describe the modeling concepts and notation of the entity-relationship model and UML, including their use in data modeling.
  3. Describe the main concepts of the OO model such as object identity, type constructors, encapsulation, inheritance, polymorphism, and versioning.
  4. Define the fundamental terminology used in the relational data model .
  5. Describe the basic principles of the relational data model.
  6. Illustrate the modeling concepts and notation of the relational data model.
IM4. Relational databases [2%] [elective]
Topics:
  • Mapping conceptual schema to a relational schema
  • Entity and referential integrity
  • Relational algebra and relational calculus
Learning objectives:
  1. Prepare a relational schema from a conceptual model developed using the entity-relationship model
  2. Explain and demonstrate the concepts of entity integrity constraint and referential integrity constraint (including definition of the concept of a foreign key).
  3. Demonstrate use of the relational algebra operations from mathematical set theory (union, intersection, difference, and cartesian product) and the relational algebra operations developed specifically for relational databases (select, product, join, and division).
  4. Demonstrate queries in the relational algebra.
  5. Demonstrate queries in the tuple relational calculus.
Topics:
  • Overview of database languages
  • SQL (data definition, query formulation, update sublanguage, constraints, integrity)
  • Query optimization
  • QBE and 4th-generation environments
  • Embedding non-procedural queries in a procedural language
  • Introduction to Object Query Language
Learning objectives:
  1. Create a relational database schema in SQL that incorporates key, entity integrity, and referential integrity constraints.
  2. Demonstrate data definition in SQL and retrieving information from a database using the SQL SELECT statement.
  3. Evaluate a set of query processing strategies and select the optimal strategy.
  4. Create a non-procedural query by filling in templates of relations to construct an example of the desired query result.
  5. Embed object-oriented queries into a stand-alone language such as C++ or Java (e.g., SELECT Col.Method() FROM Object).
  IM6. Relational database design [2%] [elective]
Topics:
  • Database design
  • Functional dependency
  • Normal forms (1NF, 2NF, 3NF, BCNF)
  • Multivalued dependency (4NF)
  • Join dependency (PJNF, 5NF)
  • Representation theory
Learning objectives:
  1. Determine the functional dependency between two or more attributes that are a subset of a relation.
  2. Describe what is meant by 1NF, 2NF, 3NF, and BCNF.
  3. Identify whether a relation is in 1NF, 2NF, 3NF, or BCNF.
  4. Normalize a 1NF relation into a set of 3NF (or BCNF) relations and denormalize a relational schema.
  5. Explain the impact of normalization on the efficiency of database operations, especially query optimization.
  6. Describe what a multivalued dependency is and what type of constraints it specifies.
  7. Explain why 4NF is useful in schema design.