Topic I - Overview of Computers and Programming Languages
Topic I - Overview of Computers and Programming Languages
An Overview of Computers
and Programming Languages
• Prepared by: Jamillah S. Guialil, MIT ICC 0103 – Intermediate Programming
Agenda:
• Programming Cycle (SDLC)
• Algorithms
• Flowchart
• Programming Methodologies
I. Programming Cycle - SDLC
This is the foundational stage where the project's goals, objectives, and scope are defined.
Key activities include:
•Gathering detailed requirements from stakeholders (clients, users)
•Analyzing feasibility (technical, economic, operational)
•Defining project scope and boundaries
•Creating a project plan (timeline, budget, resources)
Stage 2: Defining Requirements
• In this stage, all the requirements for the target software are specified. These requirements get
approval from customers, market analysts, and stakeholders.
• This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort of document that
specifies all those things that need to be defined and created during the entire project cycle.
Stage 3: Defining Requirements
This is where the actual coding and implementation of the software take place.
Key activities include:
• Writing code in the chosen programming language(s)
• Building and integrating software components
• Conducting unit tests (testing individual components)
Stage 5: Product Testing and Integration
This stage focuses on identifying and fixing bugs and ensuring the software meets the defined requirements.
Key activities include:
• Unit testing, integration testing, system testing, user acceptance testing
• Bug tracking and resolution
• Ensuring software quality and reliability
Stage 6: Deployment and Maintenance of Products
Maintenance:
• Fixing bugs and addressing issues reported by users
• Implementing software updates and upgrades
• Providing ongoing support and maintenance
• Monitoring system performance and making necessary adjustments
System Development Strategies
Strategies How it Works Pros Cons
Big bang Deployment The entire system is updated simultaneously. Simple to implement. High risk of downtime and potential for
significant disruption if issues arise.
Rollback can be complex.
Rolling Deployment Updates are gradually rolled out to a small Minimizes downtime, reduces Requires careful monitoring and can be
number of servers at a time. risk of widespread impact from more complex to manage.
bugs.
Blue/Green Two identical production environments are Minimal downtime, easy Requires more resources (two complete
Deployment maintained. Traffic is switched between the rollback, high availability. environments).
"blue" and "green" environments.
A/B Testing Different versions of the software are released Allows for data-driven decisions Can be complex to implement and
Deployment to different groups of users. on which version performs analyze.
better.
Recreate Deployment The old version of the system is completely shut Simple to implement. Significant downtime.
down and replaced with the new version.
•Key characteristics:
• Finiteness: Must terminate after a finite number of steps. It shouldn't
run forever.
•Definiteness: Each step must be precisely defined and unambiguous.
No room for interpretation.
•Input: May or may not take input. If it does, the input must be clearly
specified.
•Output: Must produce one or more outputs. The relationship between
input and output should be well-defined.
•Effectiveness: Each step must be feasible and executable within a
finite amount of time and resources.
Properties of Algorithm:
• It should terminate after a limited time.
• It should produce at least one output.
• It should take zero or more input.
• It should be deterministic means giving the same output for the same input case.
• Every step in the algorithm must be effective i.e. every step should do some work.
Problem: Find the largest number in a list of numbers.
Algorithm:
1.Start
2.Assume the first number in the list is the largest.
3.Compare the assumed largest number with the next
number in the list.
4.If the next number is greater, make it the new largest
How to express an Algorithm? number.
1.Natural Language: Natural English language. 5.Repeat steps 3 and 4 for all remaining numbers in
the list.
2.Flowchart: A graphical/pictorial representation of it.
6.Print the largest number found.
3.Pseudo Code: Form of annotations and informative 7.End
text written in plain English which is very much similar to
the real code but as it has no syntax like any of the
programming languages, it can’t be compiled or
interpreted by the computer
III. Flowcharts
A flowchart is a visual representation of a process or workflow using
standardized symbols connected by lines. It's a diagrammatic way to
illustrate the sequence of steps involved in a particular operation.
Indicates the process of inputting Shows named process which is A process step that isn’t
or outputting external data defined elsewhere. automated
Flowline
Shows the process’ direction. Each
flowline connects two blocks.
An alternate to the
normal process step
Data input or output
IV. Programming Methodologies
It is systematic approaches to software development. They provide a framework for planning, designing,
building, testing, and maintaining software applications.
Choosing the right methodology is crucial for the success of a project, as it impacts factors like:
• Project timeline
• Budget
• Team collaboration
• Software quality
Waterfall model is very simple and easy to
understand and uses methodology. That is why it is
beneficial for the beginner or novice developer.
•Cons: May not be suitable for complex projects, requires highly skilled developers.
•Focus on building a working model of the software early in
the development process to demonstrate its functionality
to the clients.
Advantages
• It allows software development companies to save
costs and time required for project realization.
• It emphasize customer involvement.
• It helps to establish rational plans and schedules
and to get the developers personally committed to
their schedules
Disanvantages
• It focused on the code rather than on design
• It only as effective as the people involved, Agile
does not solve this issue.
• It requires meetings at frequent intervals at
enormous expense to customers.
Lean Development Methodology focuses on the
creation of easily changeable software. The goal of
this methodology is to develop software in one-third of
the time, with a limited budget, and a very less amount
of required workflow.
Advantages
• The early elimination of the overall efficiency of the
development process certainly helps to speeds up
the process of entire software development which
surely reduces the cost of the project.
• Delivering the product early is a definite advantage.
It means that the development team can deliver
more functionality in a shorter period of time,
hence enabling more software projects to be
delivered.
• Empowerment of the development team helps in
developing the decision-making ability of the team
members which creates more motivation among
team members.
Activity No.1
Create an algorithm and flowchart of the ff: