Last few weeks we finished our flowchart poster presentation and learnt a lot about software. We leant its hierarchy, we defined it, and we leant different types of software (mainly categorize to system software and application software). Some interesting activities were done, too: watching videos about library softwares and translators, and in pair discussing about utility software. I heard a lot about software before but I do not know its true meaning until I finished these classes. I found software pretty interesting!
Flowchart poster

We were divided into pairs randomly to create a scenario using flowchart and pseudocode. I was with Adam and our scenario is about how to review for final exam. It is a really easy algorithm and is very useful, as it can be used not only for this semester’s final exam, but also for future final exams.
In our algorithm, we ask the user to input today’s date, which we recorded as BEG, and we ask when is the exam, recorded as END. Also there is an output “how many subject you need to prepare?” , and the input is NUM. Then we will calculate the day for one subject, using end-beg/num. For example, the beg is May 20 and the end is June 15th, and you need to review 8 subjects. It is 26/8=3. Then we created a loop to determine the review order. After that it goes to the second round of review.
The core idea of our algorithm is that we have two round of review and we review our most difficult subject first. So it let us to have much subjectivity. No matter how many days are remain and no matter how many subjects you have to prepare, you can use this algorithm to get a plan. Also, this algorithm is pretty simple and doesn’t get into details, because we all know that less is more. We don’t need to spend hours to elaborate a perfect detailed plan.
Software

First, from the view of layers, we learnt that programming, operating systems, and applications layers are softwares.

system software
System software is a software designed to operate the computer hardware and to provide a platform for running application software. It contains system management program and developing software.
system management program:
First, it is operating systems, a set of programs that make computer hardware conveniently available to the user. It hides the complexities of the computer’s operation in order to not disturb the user. For example, ios, apple, linux, and windows are all operating systems.

Second, library programs are also important. It is a set of commpiled routines that other programs can use. Comouter game developers often use graphical libraries to speed up development. We also watched a video about it, and I’m very surprised that designing a computer game include so many steps. We need to create characters( how they look like, how they perform the action and their voices), backgrounds (colors and textures), and story line. Abstract and concrete thinking are involved. After that we need to conduct experiments to find and repair bugs. It can also apply to our daily lives: after we finished our prorams/homeworks/anything, we need to examine it carefully.

Utility softwares are programs that perform a very specific task related to working with computers. They are tiny but powerful programs with a limited capability, and are used to maintain a smooth running of the computer system. I discussed 7-zip with Mr. Shao and we thought it is an untility software. After everybody shared their examples (include virus scanner, desk cleaner, and file managers), I found that 7-zip is an overlap, for it has some specific purposes, too.
Developing software: The most important one is translator software. It is a software that allows new programs to be written and run on computers, by converting source code (java/python/C++) into machine code (binary language).
There are three types: Assembler is a program that translates low level programming language into machine code. We watched an interesitng video to see the difference between compiler and interpreter: Compiler is a program that takes a program in a high-level language and translates it into object code all at once. It is pretty fast and some apps on our phones use it. Interpreter analyses and executes a high-level language program line by line, so it is easy for us to correct mistakes. “Inter” means between the programs and the mechanics.
application software
Application software allows users to perform non-computer tasks. It is a software designed to help the user to perform specific tasks, such as writing a letter or processing orders. It can be further divided into:
General purpose application software
General-purpose software is a type of software that can be used for many different tasks. It is not limited to one particular function. For example: word processors allow us to write articles, make poster, and create tables.

Special purpose application software
It is a type of software that created to execute one specific task. For example: A camera application on your phone will only allow you to take and share pictures. A chess game would only allow you to play chess.

Bespoke application software
Bespoke software is tailor made for a specific user and purpose. It is the opposite to “off the shelf” (for regular people). For example: BNDS may want a software for students to give their suggestions. Since the software need to consider the conditions in BNDS, it would have to be specially built for the task. Other examples: software for the military operations, software for hospitals and software for banks.
We learn different types of softwares in this week, and for each type we not only defined it but also give specific examples to better understand it. We watched video and discussed in pairs. It is a little bit difficult since we need to memory and distinguish these softwares, but by doing these we can immprove our abstract and concrete skills (there are big and small categories).












