CSCI 310 MIDTERM STUDY GUIDE 2026 COMPREHENSIVE QUESTION–ANSWER DIGEST, Exams of Computer Vision

CSCI 310 MIDTERM STUDY GUIDE 2026 COMPREHENSIVE QUESTION–ANSWER DIGEST

Typology: Exams

2025/2026

Available from 05/07/2026

Professor_Beatrice
Professor_Beatrice 🇺🇸

5

(1)

49K documents

1 / 85

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CSCI 310 MIDTERM STUDY GUIDE 2026
COMPREHENSIVE QUESTION–ANSWER
DIGEST
◉ software engineering.
Answer: 40 years old: NATO Conferences, Garmisch, Germany,
October 7-11, 1968, Rome, Italy, October 27-31, 1969
Nowadays, everything depends on it
(Computer science as the scientific basis)
Development of software systems whose size/complexity warrants
team(s) of engineers
Scope - study of software process, development principles,
techniques, and notations
Goal - production of quality software, delivered on time, within
budget, satisfying customers' requirements and users' needs
Software engineering is an engineering discipline which is
concerned with all aspects of software production
Software engineers should adopt a systematic and organised
approach to their work and use appropriate tools and techniques
depending on:
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55

Partial preview of the text

Download CSCI 310 MIDTERM STUDY GUIDE 2026 COMPREHENSIVE QUESTION–ANSWER DIGEST and more Exams Computer Vision in PDF only on Docsity!

CSCI 310 MIDTERM STUDY GUIDE 2026

COMPREHENSIVE QUESTION–ANSWER

DIGEST

◉ software engineering. Answer: 40 years old: NATO Conferences, Garmisch, Germany, October 7-11, 1968, Rome, Italy, October 27-31, 1969 Nowadays, everything depends on it (Computer science as the scientific basis) Development of software systems whose size/complexity warrants team(s) of engineers Scope - study of software process, development principles, techniques, and notations Goal - production of quality software, delivered on time, within budget, satisfying customers' requirements and users' needs Software engineering is an engineering discipline which is concerned with all aspects of software production Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on:

the problem to be solved, the development constraints, and the resources available A key software engineering "axiom" Better Cheaper <-- pick any two Faster ◉ difficulties. Answer: Few guiding scientific principles Few universally applicable methods As much managerial / psychological / sociological as technological ◉ why are there difficulties?. Answer: a unique brand of engineering: Software is malleable Software construction is human-intensive Software is intangible Software problems are unprecedentedly complex Software directly depends on the hardware

Reuse to amortize costs Maintenance accounts for over 60% of overall development costs ◉ software costs. Answer: Often dominate computer system costs (software on a PC > hardware cost) Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs. Software engineering is concerned with cost-effective software development 60% development costs, 40% are testing costs Evolution/maintenance costs > development costs Costs vary depending on:

  • The type of system being developed (custom built vs. mass market software)
  • The requirements of system attributes such as performance and system reliability
  • The experience of the development team(s) Distribution of costs depends on the development model that is used

◉ economic and management aspects. Answer: Software production = development + maintenance Maintenance costs > 60% of all development costs: 20% corrective, 30% adaptive, 50% perfective Quicker development is not always preferable: higher up-front costs may defray downstream costs, poorly designed/implemented software is a critical cost factor ◉ Mythical Man Month by Fred Brooks. Answer: Published in 1975, republished in 1995 Experience managing development of OS/360 in 1964- 65 Central argument: Large projects suffer management problems different in kind than small ones due to division of labor, critical need is the preservation of the conceptual integrity of the product itself Central conclusions: Conceptual integrity achieved through chief architect, implementation achieved through well-managed effort Brooks's Law: Adding personnel to a late project makes it later ◉ software project failure. Answer: Increasing system complexity:

should do is owned by the customer for the software and they make decisions on software changes that are required. ◉ software engineering vs computer science. Answer: Computer science - concerned with theory and fundamentals Software engineering - concerned with the practicalities of developing and delivering useful software Computer science theories are currently insufficient to act as a complete underpinning for software engineering ◉ software engineering vs systems engineering. Answer: Systems engineering - concerned with all aspects of computer-based systems development including hardware, software, and process engineering. Software engineering - a "component" in this process Systems engineers are involved in overall system specification, architectural design, integration and deployment ◉ software process. Answer: A structured set of activities required to develop a software system.

Specification - defining what the system should do; Design and implementation - defining the organization of the system and implementing the system; Validation - checking that it does what the customer wants; Evolution - changing the system in response to changing customer needs. A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective. ◉ methods. Answer: Structured approaches to software development which include system Models - why? Notations - Such as? Rules - constraints applied to system models Design advice - recommendations on good design practice Process guidance - what activities to follow What are some example methods? ◉ essential attributes of good software (4).

Delivery: There is increasing pressure for faster delivery of software ◉ essential difficulties (4). Answer: - Complexity: no two software parts are alike complexity grows non-linearly with size

  • Conformity: software is always required to conform often the "last kid on the block"
  • Changeability: software is viewed as infinitely malleable change originates with new applications, users, machines, standards, laws
  • Invisibility: the reality of software is not embedded in space software is not representable as a familiar geometric entity ◉ software process activities (4). Answer: - Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation.
  • Software development, where the software is designed and programmed.
  • Software validation, where the software is checked to ensure that it is what the customer requires.
  • Software evolution, where the software is modified to reflect changing customer and market requirements.

◉ general issues that affect software (4). Answer: - Heterogeneity: Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices.

  • Business and social change: Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software.
  • Security and trust: As software is intertwined with all aspects of our lives, it is essential that we can trust that software.
  • Scale: Software has to be developed across a very wide range of scales, from very small embedded systems in portable or wearable devices through to Internet-scale, cloud-based systems that serve a global community. ◉ types of software applications (8). Answer: - Stand-alone applications: These are application systems that run on a local computer, such as a PC. They include all necessary functionality and do not need to be connected to a network.
  • Interactive transaction-based applications: Applications that execute on a remote computer and are accessed by users from their own PCs or terminals. These include web applications such as e- commerce applications.
  • Where appropriate, you should reuse software that has already been developed rather than write new software. ◉ internet software engineering. Answer: - The Web is now a platform for running application and organizations are increasingly developing web-based systems rather than local systems.
  • Web services allow application functionality to be accessed over the web.
  • Cloud computing is an approach to the provision of computer services where applications run remotely on the 'cloud'.
  • Users do not buy software buy pay according to use. ◉ issues of professional responsibility (4). Answer: Intellectual property rights Computer misuse Confidentiality Competence ◉ Intellectual property rights. Answer: Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected.

◉ Computer misuse. Answer: Software engineers should not use their technical skills to misuse other people's computers. Computer misuse ranges from relatively trivial (game playing on an employer's machine, say) to extremely serious (dissemination of viruses). ◉ Confidentiality. Answer: Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. ◉ Competence. Answer: Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwith their competence. ◉ ACM/IEEE Code of Ethics (8). Answer: The Code contains eight Principles related to the behaviour of and decisions made by professional software engineers, including practitioners, educators, managers, supervisors and policy makers, as well as trainees and students of the profession:

  1. PUBLIC - Software engineers shall act consistently with the public interest.

Because of their roles in developing software systems, software engineers have significant opportunities to do good or cause harm, to enable others to do good or cause harm, or to influence others to do good or cause harm. To ensure, as much as possible, that their efforts will be used for good, software engineers must commit themselves to making software engineering a beneficial and respected profession. ◉ software process descriptions. Answer: Capturing activities such as specifying a data model, designing a user interface, etc. and the ordering of these activities. Products - the outcomes of a process activity; Roles - reflect the responsibilities of the people involved in the process; Pre- and post-conditions - statements that are true before and after a process activity has been enacted or a product produced. ◉ plan-driven processes. Answer: processes where all of the process activities are planned in advance and progress is measured against this plan ◉ agile processes. Answer: planning is incremental and it is easier to change the process to reflect changing customer requirements

◉ The waterfall model. Answer: Plan-driven model. Separate and distinct phases of specification and development. Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance Drawback - the difficulty of accommodating change after the process is underway; a phase has to be complete before moving onto the next phase ◉ problems with waterfall model. Answer: Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. Few business systems have stable requirements.

Answer: - The process is not visible.

  • Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.
  • System structure tends to degrade as new increments are added.
  • Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure.
  • Incorporating further software changes becomes increasingly difficult and costly. ◉ Integration and configuration. Answer: The system is assembled from existing configurable components. May be plan-driven or agile.
  • Based on software reuse where systems are integrated from existing components or application systems COTS, GOTS, ROTS
  • Reused elements may be configured to adapt their behaviour and functionality to a user's requirements
  • Reuse is now the standard approach for building many types of business systems ◉ types of reusable software.

Answer: - Stand-alone application systems (sometimes called COTS) that are configured for use in a particular environment.

  • Collections of objects that are developed as a package to be integrated with a component framework such as .NET, J2EE, Django, Spark, Symfony.
  • Web services that are developed according to service standards and which are available for remote invocation. ◉ Reuse-oriented software engineering. Answer: Stages:
  • Requirements specification
  • Software discovery and evaluation
  • Requirements refinement
  • Application system configuration
  • Component adaptation and integration Real software processes are inter-leaved sequences of technical, collaborative and managerial activities Overall goal of specifying, designing, implementing and testing a software system. ◉ requirements engineering process (software specification). Answer: The process of establishing what services are required and the constraints on the system's operation and development.