Record what you have learned in the four months of in-house software engineer training (* currently in progress)

Introduction

Hi, my name is Maki and I am aiming to become a back-end engineer from my inexperienced Alafor.

After graduating from a science graduate school, I worked as an engineer at a major manufacturer for 12 years as a new graduate. It has been decided to change jobs to a software engineer in-house through an in-house recruitment.

I'm planning to start working after studying for 4 months from November. I decided to post my first article on Qiita this time because I wanted to leave what I learned here as a memo for myself.

Alafor's uncle didn't even understand the meaning of Markdown notation until he wrote this, I hope it will be helpful for people of the same age group and those who are aiming to change jobs as engineers from inexperienced people.

(Articles will be updated every time for 4 months)

Training curriculum

In the first month, you will learn the following in a classroom lecture. WBT teaching materials are from Net Learning.

■ WBT: First Information Technology (3rd) ・ What is a computer? Computer and life ・ Basic theory of information ・ Basic knowledge of algorithms ・ Basic knowledge of hardware ・ Basic knowledge of software ・ Basic knowledge of networks ・ Basic knowledge of database ・ Basic flow of information system construction / operation / maintenance

■ WBT: C language programming Step1 (3 days) ・ Introduction to C language ・ Various basic data types ・ Constant (literal) ・ Expressions and operators ・ Control flow ・ File input / output · Functions and structured programming

■ WBT: C language programming Step2 (3 days) ・ Bit operations and macros ・ Introduction to pointers · Various data types and pointers -Dynamic memory management -Compilation mechanism and library ・ ANSI standard library ・ Low level input / output ·data structure ·algorithm

■ Introduction to algorithm (3 days) Learn the following using the Python language ・ Basic concept of algorithm ・ Concept for making algorithms -Building a simple program using the Python language

■ Introduction to the development process (1 day) Learn the characteristics of waterfall type and agile type

■ Introduction to Structured Analysis and Design (1 day) -Notation of typical design drawings (context diagram, DFD, structure chart) ・ Cohesion / coupling (one of the measures of good / bad module division)

■ Introduction to security technology (1 day) ・ Security thinking and damage, necessity of product security ・ Security laws and regulations ・ Overview of secure development process

■ Introduction to network technology (1 day) -Network type, 7 layers, TCP / IP network ・ Wireless network mechanism (Wi-Fi, Bluetooth, public wireless, etc.) ・ Web connection mechanism (HTTP, etc.), image / video transmission mechanism ・ Practice (so that you can connect your Linux PC to the network and search Google)

This is the lecture. From the second month to 3 months The following exercises and project development will be carried out by the team.

■ C language implementation exercise (9th) Deepen your understanding of C language by solving various algorithms in C language. You will also learn how to use eclipse, redmine and Subversion. ・ Task management, version control ・ Integrated development environment -Module division, header file, make ・ C language grammar confirmation problem ・ Basic algorithm problem ・ Data structure problem

■ Development Project Exercise 1 (15th) From understanding development issues and requirements analysis to prototype development

■ Development Project Exercise 2 (14th) From requirement definition to delivery

■ Development Project Exercise 3 (12th) Learn the basics of firmware using a board equipped with a microcomputer (RX) ・ Embedded C language ・ Memory allocation ・ Startup programming ・ I / O control ・ Link between C language and assembly language ・ Interrupt program ・ Program tuning ・ Switch push down detection ・ Timer ・ AD converter ・ Serial communication interface ・ Dynamic lighting ・ Key scan ・ Pulse motor ・ DMAC ・ What is a real-time OS? ・ Mechanism of real-time OS ・ Real-time OS functions ・ Equipped with real-time OS ・ Task design ・ Implementation points ・ Software verification of multitasking system

The above is the curriculum.

WBT: First Information Technology (3rd)

This content overlaps with the basics of computer science that I have been studying at "Kitami-style Illustration IT School Basic Information Engineer" for a while.

・ "Computer" is a general term for machines that process electrical signals and perform calculations. ・ "IT (= information technology)" is a technology that processes information by computers and related equipment. -Computers are used not only in so-called PCs, but also in invisible places such as automobiles and home appliances (rather, there are more such computers). -Computers can be divided into two types, "server" and "client" in terms of usage. The server is a computer that provides various services via the network such as connecting to the Internet and searching the database (eg, spacon, workstation), and the client is a computer that requests services and processing from the server (eg, PC, smartphone).

-Information handled by computers is "digital" (a method of expressing information in discrete numbers). -In digital information, the amount of alternative information "not" or "yes" is defined as one amount of information, and this is called a bit. A unit in which eight of these (easy to understand if you imagine a light bulb) are lined up is called 1 byte. ・ To be exact, 1KB is 2 to the 10th power = 1024 bytes. 1MB is 1024KB, 1GB is 1024MB, 1TB is 1024GB -The expression method of numbers suitable for handling "0" and "1" is "binary number". -There are "1-byte code" (ASCII code, JIS code (JIS X 0201)) and "2-byte code" (JIS code (JIS X 0208) Unicode) as a mechanism for displaying characters. Kanji is used in Japan, so both are used together. -When two values of 0 or 1 are given, an operation that results in one value of 0 (false) or 1 (true) is called a logical operation. A logical expression (eg, logical product, logical sum) is a logical operation written like a mathematical formula.

-To process information on a computer, the information must first be digitized. In addition, you need to use "instructions". Therefore, create a "program" that arranges several instructions and performs one cohesive process. -The word for writing a program is "programming language", and writing a program using the program language is called "programming". -The types of program languages can be broadly divided into "general-purpose program languages" and "script languages" (HTML, JavaScript, XML, etc.). -General-purpose program languages are "low-level languages" (machine language, assembly language. Machine language can be directly interpreted and executed by the CPU, but it is difficult for humans to understand. Therefore, write a program in words that are easy for humans to understand, and then write a program. Was devised to replace with machine language, the early ones being assembly language) and high-level languages (Fortran, COBOL, BASIC, C language, Java, etc.) -High-level languages were developed as languages that are closer to human languages and ways of thinking than assembly language. -Fortran (1956), COBOL (1959), BASIC (1960s), C language (1972), Java (1995) ・ What is an algorithm? To create a program, analyze the problem and the content of the work, and the computer decides the procedure to process it. This processing procedure. -Algorithm and program are one. The conditions for a good algorithm are correct, easy to understand, general and extensible, and efficient. -When expressing the algorithm programmatically, the data structure (what form the data to be processed can be made) is also important. Algorithm + data structure = program (eg array, list, tree structure, stack, queue)

-"Hardware" is something that has a shape such as a CPU or display. (On the other hand, intangible things such as programs are called software) ・ Five major functions of a computer: Input (eg keyboard, mouse), output (display, printer), memory (eg memory, HDD), arithmetic (CPU), control (CPU) -The "CPU" (Central Processing Unit) is the core of the computer and the brain itself. It is made of IC (semiconductor integrated circuit). -Role of CPU: When executing a program, the CPU stores the instructions written in the program in memory, takes them out one by one from the memory, decodes (interprets) them, executes operations, and issues commands to each device. I will send it. When the processing of one instruction is completed, the next instruction is taken out and the operation and control are performed. The processing of the program proceeds by repeating this process. -Each instruction consists of an "instruction code" and an "operand" (the location in the memory to be processed). -There is a temporary storage area called "register" in the CPU. The main registers are instruction registers, program counters, accumulators, and general-purpose registers. -The CPU has a logic circuit that actually processes logical operations electrically. -The main storage device (memory) is a storage location that temporarily stores the instructions read by the CPU and the results of operations performed by the CPU. Large RAM (random access memory) and ROM (read-only memory) -Resolution: Full high division (FHD) resolution (number of pixels) is 1920 x 1080. 4K is 3860 x 2160.

-Software includes "system software" (controls computer hardware) and "application software" (developed according to business and type of work). -System software includes basic software (operating system (OS) and middleware (database management system (DBMS), kana-kanji conversion function, etc.) ・ Types of application software: Word, Excel, Photoshop, browsers in general, Outlook, etc.) ・ Positioning of OS: Located between hardware and application software, it provides an environment that makes it easier for users to use computers by mediating between them. ・ OS type

type Characteristic
UNIX OS developed in the 1970s. Often used for servers and workstations. Currently, derivative OS such as Linux is popular.
MS-DOS An OS jointly developed by IBM and Microsoft, announced in 1981. You can only run one application at a time.
Mac OS OS announced by the current Apple Inc. in 1984. GUI is adopted ahead of Windows.
Windows3.0、3.1 Announced in 1990. The company's first use of GUI for the user interface (6 years behind Mac)

-Main functions of the OS: job management, task management, memory management, input / output management, etc. -When the OS receives a job from the user, it analyzes it and creates a task. A task is a unit of work processed by a computer, and tasks are efficiently assigned to and controlled by a processor (CPU). -The processor processes the program by executing instructions one by one in order for each task. However, when an interrupt occurs, task execution is interrupted and the processor becomes free. The OS executes another task in this spare time by "multi-programming" and processes multiple jobs in parallel.

WBT: C language programming Step1 (3 days)

(Unlearned)

WBT: C language programming Step2 (3 days)

(Unlearned)

Introduction to algorithms (3 days)

(Unlearned)

Introduction to the development process (1 day)

(Unlearned)

Introduction to Structured Analysis and Design (1 day)

(Unlearned)

Introduction to Security Technology (1 day)

(Unlearned)

Introduction to network technology (1 day)

(Unlearned)

C language implementation exercise (9th)

(Unlearned)

Development Project Exercise 1 (15th)

(Unlearned)

Development Project Exercise 2 (14th)

(Unlearned)

Development Project Exercise 3 (12th)

(Unlearned)

Recommended Posts

Record what you have learned in the four months of in-house software engineer training (* currently in progress)
What beginners learned from the basics of variables in python
You will be an engineer in 100 days --Day 29 --Python --Basics of the Python language 5
You will be an engineer in 100 days --Day 33 --Python --Basics of the Python language 8
You will be an engineer in 100 days --Day 26 --Python --Basics of the Python language 3
Test the number of times you have thrown a query (sql) in django
You will be an engineer in 100 days --Day 32 --Python --Basics of the Python language 7
You will be an engineer in 100 days --Day 28 --Python --Basics of the Python language 4