Course description

The course provides understanding of software development issues for large scale development through modelling and notation. Furthermore, the course provides understanding and practices on essentials of software Project Management including straight forward techniques for project scooping and control as well as tools and techniques for planning, scheduling and tracking.

Course Objectives:

At the end of the course candidates should be able to:

  1. Be able to describe the major elements of the Software Development process
  2. Be able to use a typical formal specification method
  3. Be able to contrast properties of formal and informal software specification techniques
  4. Be able to create simple program specifications of typical formal specification method
  5. Be able to apply the requirements and domain analysis methods of the Unified Modeling Language (UML).
  6. Be able to perform Use Case and Activity Diagram analysis for problems of limited size.
  7. Be able to effectively use available tools for program specification and design
  8. Be able to work effectively in a group to employ the above skills in the planning and implementation of a system of non-trivial size.

Course Contents:

  1. Introduction (Notes)(Reference):
  2. Software Processes (Notes)
  3. Requirements Engineering (Notes) (Assignment)
  4. System modeling
  5. Architectural Design
  6. Software testing
  7. Project Management
  8. Project Planning

Required Readings

  1. Bruegge B., & Dutoit A. H (2004) : Object Oriented Software Engineering Conquering Complex and Changing Systems, 2nd Edition, Prentice Hall
  2. Sommerville I. (2004): Software Engineering, 8th Edition, Adson – Wesley,
  3. Henry J. (2003) : Software Project Management, A Real World Guide to Success, International edition, Pearson

Recommended Readings

  1. Schmuller : SAMS Teach Yourself UML in 24 Hours, Sams Publishing,
  2. Sommerville : Software Engineering, Addison Wesley 5th Ed.
  3. O’connell, F.(2001) : How to run successful projects III, Addison Wesley
  4. Roger S. Pressman (2000) : Software Engineering A Practitioner's Approach European Adaptation, 5th Edition
  5. M. Looijen (2000) : Management of IS, Prentice Hall,Int.

https://cs.nyu.edu/courses/spring08/V22.0474-001/syllabus.html

 http://www.cs.cornell.edu/courses/cs501/2005sp/syllabus.html

 

What is software engineering

The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software.

Software process: Most projects follow recognized stages. The set of steps which lead to a software product is called a software process

 Recommended contents

  • Course overview
  • Software processes
  • Project management
  • Software Requirements
  • Requirement engineering
  • System models
  • Formal Specifications
  • Application Architecture
  • Object Oriented Design
  • User interface design
  • Verification and Validation/Testing
  • Rapid Software Development
  • Design overview
  • Testing overview
  • Design patterns
  • Development platforms
  • Version control
  • Managing People

 Recommended contents

  1.  Introduction to Software Engineering and Computer Ethics.
  2. Process Models and Software Products
  3. Requirements Analysis
  4. Structured design I, Modularity
  5. Structured design II: -Functional decomposition
  6. Structured design III: Data Flow Design
  7. Object-oriented design
  8. User interface design.
  9. Programming paradigms
  10. Object-oriented programming
  11. Verification    
  12. Issues of Software fault tolerance and exceptions
  13. Project management
  14. Course wrap-up and review

 

Course description

The course is to provide the foundation to the students’ skills in using numerical approaches to solve mathematical/real life problems. The focus will be on the ability to correctly formulate numerical problems and schemes that solve them.

Course Objectives:

  • To provide a basis on the numerical approaches to computational, problem solving;
  • To provide students with problem analysis and solving skills to be able to
    handle typical computational problems in practice.

Course learning outcomes

At the end of the course candidates should be able to:

  • Use Mathematical skills in basics of Information Technology.
  • Use the schemes to generate solutions to the different setups of numerical problems to the required precision
  • Use mathematical concept in other courses.
  • Apply different mathematical principles to solve Problems in Information Technology
  • Compute various mathematical equations
  • Derive mathematical formulas.

Course Contents:

  • Linear Programming: Simultaneous Equations, Linear Inequalities, Linear Programming.
  • Coordinate Geometry: Equation of straight Line, Midpoint of a line segment, Distance between two points on a plane, Parallel and Perpendicular Lines, Solve problems on parallel and perpendicular lines
  • Trigonometry: Trigonometrical Ratios in a unit Circle, Relationship between trigonometrical ratios, positive and negative Angles, Application of Trigonometric Ratios.
  • Vectors: Displacement, Equivalent and Position Vectors, Magnitude of a Vectors, Direction of a vectors, Addition of Vector, Addition of Vectors, Scalar Multiplication of Vectors, Application of Vectors.
  • Exponential and Logarithmic Functions:

Required Readings

  • Tanzania Institute of Education (2002). Secondary Basic mathematics Book four

Recommended Readings

  • Numerical Analysis by Richard L. Burden and J. Douglas Faires, Wardsworth,1993.
  • A.K. Kaw, E.E.Kalu and D.Nguyen (2008). Numerical Methods with Applications

Learning outcomes

  1. Define ICT terminologies
  2. Use Packages to address societal needs
  3. Predict and explain implication of ICT to the society

Topics

  • Introduction to ICT
    • Importance of ICT
    • History of ICT
    • Advantages and Disadvantages of ICT 
    • What is information?
    • Why is it needed by people?
    • When is it needed?
    • How information is accessed by people?
    • How is information stored?
    • How is information being processed or transformed into other forms?
  • Digital Economy
    • What is digital economy?
    • Other related terms for digital economy: internet economy, new economy or web economy
    • The focus is how internet would change the way we do business
    • Business functions
    • Value chain
    • Business pressure
    • Characteristics of digital economy
    • Advantages and disadvantages of digital economy
    • Implication of digital economy
  • Computer Hardware
    • What is computer hardware?
    • Categories of computer hardware
      • Input
      • Output
      • Processing
      • Storage
    • Data storage units
      • Bits
      • Bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Nanobytes
    • Keyboard
    • Mouse
    • Monitor
    • Touch-pad
    • Printer
    • Speaker
    • Microphone
    • Hard disk
    • Floppy disk
    • Flash disk
    • Memory Card
    • CD or DVD
    • Zip drive
  • Computer Software
    • What is computer Software?
    • Types of Computer Software
    • Examples of Computer Software
    • Creating/acquiring computer software
    • Installation of Computer Software
    • Determining type of software to purchase
    • Characteristics of computer software
  • Operating System
    • What is operating system?
    • Role of operating system
    • Functions of operating system
    • Types of operating systems
    • Examples of operating systems
    • Acquiring operating system
    • Installation of operating system
  • Application packages
    • What is application software?
    • Examples of application software
    • Word processing software: MS Word
    • Spreadsheet software: MS Excel
    • Presentation software: MS PowerPoint
    • Database Management software: MS Access
    • Data analysis software: SPSS
  • Data communication
  • E-business
  • Information security
  • Functional Information Systems

Review questions

  1. How does application software differ from operating system software?
  2. Software or programs are designed to make users more productive. Discuss this statement.
  3. Describe the characteristics of software suitable for business information management
  4. Describe the following kinds of software programs
    • Custom software
    • Packaged software
    • Open source software
    • Freeware
  5. What are the three advantages of acquiring software through application service provider (ASP)?
  6. What is the function of spreadsheet software?
  7. Juma want to establish new business in Morogoro. Before investing in the business Juma wanted to conduct a study in order to know the market needs of his products.
    • Which software will he use
    • Develop at least three question in the questionnaire that he will prepared to collect preference of the product he want to invest
    • Describe how such questions will be entered into the research software before making statistical analysis

 

 

  1. Internet programming languages: Java server pages (JSP), Servlets, PhP, concepts of Internet Applications. 
  2. Concepts of Client-Server Architecture in internet applications
  3. Sockets, client-server, proxies and gateways, application programming.
  4. Process and threads & Inter-process Communication
  5. Message Formats and Techniques
  6. The Application Programming Interface - API
  7. Application protocols: SMTP, FTP, DNS and the Secure Shell
  8. Mobile application development: Languages, technologies and platforms

Lecture Notes

Mobile application development is a term used to denote the act or process by which application software is developed for mobile devices, such as personal digital assistants, enterprise digital assistants or mobile phones. These applications can be pre-installed on phones during manufacturing platforms, or delivered as web applications using server-side or client-side processing (e.g., JavaScript) to provide an "application-like" experience within a Web browser. Application software developers also must consider a long array of screen sizes, hardware specifications, and configurations because of intense competition in mobile software and changes within each of the platforms. Mobile app development has been steadily growing, in revenues and jobs created. A 2013 analyst report estimates there are 529,000 direct app economy jobs within the EU 28 members, 60% of which are mobile app developers.

As part of the development process, mobile user interface (UI) design is also essential in the creation of mobile apps. Mobile UI considers constraints, contexts, screen, input, and mobility as outlines for design. The user is often the focus of interaction with their device, and the interface entails components of both hardware and software. User input allows for the users to manipulate a system, and device's output allows the system to indicate the effects of the users' manipulation. Mobile UI design constraints include limited attention and form factors, such as a mobile device's screen size for a user's hand(s). Mobile UI contexts signal cues from user activity, such as location and scheduling that can be shown from user interactions within a mobile application. Overall, mobile UI design's goal is mainly for an understandable, user-friendly interface. The UI of mobile apps should: consider users' limited attention, minimize keystrokes, and be task-oriented with a minimum set of functions. This functionality is supported by mobile enterprise application platforms or integrated development environments (IDEs).

Internet programming languages

  • Java Server Pages (JSP)
  • Servlets
  • PHP
  • ASP
  • ASP.NET

PHP

PHP is a wide use general purpose scripting language which used to make dynamic interact web pages. It can embedded with HTML source document used in server side. Influenced by C, Perl, Java, C++, thus it support multiple paradigm in programming, such as object-oriented (OO) and imperative. In the meantime, its type system is loosing typing and dynamic type checking. As the updates of version, it supports more new features to make the PHP more functional and diversify. Now, the latest version is PHP 5.33, and will be used in the following.

 

Factors for choosing programming language for web apps development

  • Server platform (such as Windows or Unix-based OS)
  • Server software (IIS: Internet Information Services for Windows and Apache for Unix-based OS and other OS)
  • Programming experience
  • Budget of the project
  • Choice of database (SQL server, MySQL)

Client Server Architecture in Internet Apps

 

Sockets,

Proxies and Gateways

Application Programming

Process and Threads

Inter-process Communication 

Message Format and Techniques

Application Programming Interface (API)

Application Protocols

Mobile Application Development

  • Languages: 
  • Technologies
  • Platforms
When creating mobile apps factors to consider include
  • Platform
  • Use of hardware sensors: GPS, Accerelometer, and gyroscope
  • Security needs
  • Purpose of apps: Internal use, customer case, income generation
  • Data integration needs
Native app

Developer(s): You’ll need a developer familiar with the mobile platform programming language. Most platforms use different programming languages. Here are the programming languages required to create native apps for the most popular mobile operating systems.

  • Android - Java
  • Blackberry - Java
  • iOS - Objective-C
  • Windows Phone 7 - C#
Web app
  • Web designer: You’ll need someone who is familiar with HTML, CSS, and Javascript.
  • Web developer: If you want full web apps that connect to a back-end database and include business logic, you’ll need a web developer. Unlike native apps, you’re not limited to one development language. You can build mobile apps in whatever language you wish, like Java, PHP, Python, etc…
Decision towards choosing Mobile Web App Vs Native Mobile APP Development Approaches
  • If you want apps that work across multiple platforms, mobile web apps are a better option.
  • If you want apps that access the device’s camera or microphone, native apps are a better option.
  • If security is important, mobile web apps are a better option.
  • If you want to sell your apps, native apps are a better option.
  • If you want apps that integrate with existing systems and databases, mobile web apps are a better option 

References

https://www.cleverism.com/programming-languages-web-development/

 Review Questions

  1. Analyze four (4) different mobile programming languages for application development and provide design recommendations based on the nature of the problem to be solved.
  2. Describe down any three mobile programming languages used for application development
  3. Write a JSON data format for pizza order with customer information
  4. List down three world wide companies that have published their API. Describe why do they publish the API and list down any three API published by the companies
  5. Describe the TCP client/server interaction processes that happens from when the socket is opened to when it is closed
  6. What is a socket as used in internet programming
  7. Account for four types of social internet applications that would be appropriate for the client – server architecture
  8. What is the difference between thin client and fat client as used in internet application development
  9. Analyze the components of client server architecture for designing internet application.
  10. Write down JSP scripts/code used to authenticate a user when using electronic commerce information system, point out the names of the JSP pages involved, assuming that the database “mypet” has been created with a table “login” having fields id, username, password and level.
  11. Account for the design approach that one can adopt for the development of electronic commerce information system considering the interactions between the buyer and sellers representing at least four functions
  12. How does JavaScript differ from java server pages
  13. What makes Android Mobile OS popular as compared to other Mobile OS?
  14. Account for the top four mobile OS in terms of portability, reliability, Security and memory requirements
  15. What makes android and iPhone OS differ?
  16. Account for suitability of JSP as compared with other web programming languages
  17. Account for usefulness of Proxy server for web application development

 

Contents

  1. Software development life cycle 
  2. Software quality factors, software measures, software engineering principles
  3. System life-cycle models, requirements definition and analysis, behavioral specification
  4. Software design, implementation, software testing techniques;
  5. Verification and validation, system evolution, software project management.

References

  1. Ian Sommerville. Software Engineering: (8th Edition), Addison- Wesley,
  2. Roger S. Pressman. Software Engineering: A practitioner’s approach (7th ed). ISBN: 0078022126, McGraw Hill, 2008.
  3. Robert C. Martin Agile Software Development, Principles, Patterns, and Practices. 0135974445 (ISBN13: 9780135974445), 2002 
  4. Shehory, Onn, Sturm, Arnon. Agent-Oriented Software Engineering. ISBN 9783-642-54432-3, Springer, 2014

 

Links

Software development lifestyle