Trả lời các câu hỏi. Xem và làm theo các clip ở nhà trước các buổi học (giáo viên sẽ kiểm tra và cho điểm)
----
1 Mở đầu
1.1 Mô hình Bloom
Áp dụng mô hình Bloom[1] vào việc học và làm việc, có thể hiểu nôm na là để tìm hiểu và làm việc trong lĩnh vực lập trình cần trải qua các bước sau, Biết > Hiểu > Vận dụng > Phân tích > Tổng hợp > Đánh giá, xem thêm phần giải thích dưới đây:
Đánh giá (evaluation)
|
Đánh giá được giải pháp đó là hợp lý hay không
|
Tổng hợp (synthesis)
|
Gắn kết các thành phần lại để tạo ra một hệ thống mới
|
Phân tích (analysis)
|
Nhận biết được nguyên lý tổ chức, hiểu được sự gắn kết của các thành phần
|
Vận dụng (application)
|
Áp dụng vào làm thực tế, áp dụng trong các tình huống khác nhau
|
Hiểu (comprehension)
|
Hiểu được tại sao lại phải làm như thế
|
Biết (knowledge)
|
Nhớ và làm theo
|
Phương pháp học là,
– Xem các bài hướng dẫn, rồi làm theo. Ghi lại quá trình học (đã coi clip nào, các trang web hay, các tài liệu hay)
– Ghi lại các khái niệm chưa biết, tìm đọc tài liệu, để hiểu các khái niệm này. Ghi chép lại các khái niệm này
– Qua việc làm theo, ghi chép, tìm hiểu, người học sẽ biết được để làm lập trình cần các công cụ gì, sử dụng các công cụ đó như thế nào, bước đầu có những khái niệm ở mức cơ bản (hiểu)
– Tự làm các dự án nhỏ (lưu trên Github, để giới thiệu với nhà tuyển dụng)
– Xin làm thêm để học nghề
1.2 Theo lập trình, nên học gì?
1.2.1 Về Stack Overflow
– Là một mạng xã hội lớn, uy tín của các lập trình viên trên thế giới
– Giúp các lập trình viên tìm kiếm giải pháp cho các vấn đề gặp phải trong công việc hàng ngày; là nơi mỗi cá nhân thể hiện trình độ của mình thông qua việc giúp đỡ các đồng nghiệp khác; tuyển người làm & tìm việc làm
– Jeff Atwood và Joel Spolsky (người Mỹ) sáng lập Stack Overflow năm 2008
– Hơn 50M lượt người truy cập mỗi tháng, trên 14M câu hỏi, trên 19M trả lời
– Thực hiện các khảo sát hàng năm, năm nay là lần thứ 8, với hơn 100.000 lập trình viên đang làm việc tại 183 quốc gia và vùng lãnh thổ tham gia khảo sát
1.2.2 Nên chọn công việc nào để theo học
Bảng sau là một số công việc phổ biến của nghề lập trình, đồng thời cho biết tỉ lệ của mỗi công việc dựa trên số người được khảo sát. Tham khảo để chọn sẽ theo học cái gì? Thông thường, nên chọn công việc có nhiều người đang làm, tức thị trường đang cần nhiều. Hoặc có người đang làm nghĩa là có nhu cầu tuyển dụng, vì vậy học cái gì cũng được, nếu thực sự đam mê. Tuy nhiên, nếu chưa thử hết các công việc làm sao biết mình thích cái nào hơn cái nào? Cần người tư vấn và tự trải nghiệm?
Loại công việc
|
Tỉ lệ
|
Loại công việc
|
Tỉ lệ
|
Back-end developer
|
57.9%
|
Data or business analyst
|
8.2%
|
Full-stack developer
|
48.2%
|
Data scientist or machine learning specialist
|
7.7%
|
Front-end developer
|
37.8%
|
QA or test developer
|
6.7%
|
Mobile developer
|
20.4%
|
Engineering manager
|
5.7%
|
Desktop or enterprise applications developer
|
17.2%
|
Embedded applications or devices developer
|
5.2%
|
Student
|
17.1%
|
Game or graphics developer
|
5.0%
|
Database administrator
|
14.3%
|
Product manager
|
4.7%
|
Designer
|
13.1%
|
Educator or academic researcher
|
4.0%
|
System administrator
|
11.3%
|
C-suite executive (CEO, CTO, etc.)
|
3.8%
|
DevOps specialist
|
10.4%
|
Marketing or sales professional
|
1.2%
|
1.2.3 Mức lương của mỗi công việc
Ngoài yếu tố dễ xin việc, hợp với đam mê của bản thân, cũng nên quan tâm tới mức lương của mỗi công việc. Tất nhiên, lương cao thì đòi hỏi trình độ, kinh nghiệm, áp lực công việc cũng cao.
Loại công việc
|
Mức lương
|
Loại công việc
|
Mức lương
|
Engineering manager
|
$89,000
|
System administrator
|
$56,000
|
DevOps specialist
|
$72,000
|
QA or test developer
|
$55,000
|
Data scientist or machine learning specialist
|
$60,000
|
Database administrator
|
$51,000
|
Data or business analyst
|
$59,000
|
Front-end developer
|
$51,000
|
Embedded applications or devices developer
|
$59,000
|
Designer
|
$46,000
|
Full-stack developer
|
$59,000
|
Educator or academic researcher
|
$44,000
|
Desktop or enterprise applications developer
|
$57,000
|
Mobile developer
|
$43,000
|
Back-end developer
|
$56,000
|
Game or graphics developer
|
$40,000
|
1.2.4 Chọn công nghệ nào để theo
Với mỗi công việc có thể lựa chọn nhiều công nghệ khác nhau, bao gồm: ngôn ngữ lập trình, cơ sở dữ liệu, mã nguồn mở hay đóng, trình viết mã, framework, thư viện.
Ngôn ngữ
Bảng dưới đây là danh sách các ngôn ngữ phổ biến đang được mọi người sử dụng,
Ngôn ngữ
|
Tỉ lệ
|
Ngôn ngữ
|
Tỉ lệ
|
JavaScript
|
71.5%
|
Swift
|
8.3%
|
HTML
|
69.4%
|
Objective-C
|
7.3%
|
CSS
|
66.2%
|
Go
|
7.2%
|
SQL
|
58.5%
|
Assembly
|
6.9%
|
Java
|
45.4%
|
VB.NET
|
6.9%
|
Bash/Shell
|
40.4%
|
R
|
6.0%
|
Python
|
37.9%
|
Matlab
|
5.5%
|
C#
|
35.3%
|
VBA
|
4.8%
|
PHP
|
31.4%
|
Kotlin
|
4.7%
|
C++
|
24.6%
|
Groovy
|
4.5%
|
C
|
22.1%
|
Scala
|
4.5%
|
TypeScript
|
18.3%
|
Perl
|
4.2%
|
Ruby
|
10.3%
|
Cơ sở dữ liệu
Bảng dưới đây là danh sách các cơ sở dữ liệu phổ biến đang được mọi người sử dụng,
Cơ sở dữ liệu
|
Tỉ lệ
|
Cơ sở dữ liệu
|
Tỉ lệ
|
MySQL
|
58.7%
|
Memcached
|
5.5%
|
SQL Server
|
41.2%
|
Amazon DynamoDB
|
5.2%
|
PostgreSQL
|
32.9%
|
Amazon RDS/Aurora
|
5.1%
|
MongoDB
|
25.9%
|
Cassandra
|
3.7%
|
SQLite
|
19.7%
|
IBM Db2
|
2.5%
|
Redis
|
18.0%
|
Neo4j
|
2.4%
|
Elasticsearch
|
14.1%
|
Amazon Redshift
|
2.2%
|
MariaDB
|
13.4%
|
Apache Hive
|
2.2%
|
Oracle
|
11.1%
|
Google BigQuery
|
2.1%
|
Microsoft Azure (Tables, CosmosDB, SQL, etc)
|
7.9%
|
Apache Hbase
|
1.7%
|
Google Cloud Storage
|
5.5%
|
Framework, thư viện, công cụ
Bảng dưới đây là danh sách các framework, thư viện, công cụ phổ biến đang được mọi người sử dụng,
Framework, thư viện, công cụ
|
Tỉ lệ
|
Framework, thư viện, công cụ
|
Tỉ lệ
|
Node.js (JS)
|
49.6%
|
Cordova (JS mobile)
|
8.5%
|
Angular (JS)
|
36.9%
|
TensorFlow (Machine Learning)
|
7.8%
|
React (JS)
|
27.8%
|
Xamarin (mobile app)
|
7.4%
|
.NET Core
|
27.2%
|
Spark (Java)
|
4.8%
|
Spring (Java)
|
17.6%
|
Hadoop (big data, distributed data)
|
4.7%
|
Django (Python)
|
13.0%
|
Torch/PyTorch (deep learning – python)
|
1.7%
|
Trình viết mã
Bảng dưới đây là danh sách trình soạn thảo mã nguồn (IDE, code editor) đang được mọi người sử dụng,
IDE/code editor
|
Tỉ lệ
|
IDE/code editor
|
Tỉ lệ
|
Visual Studio Code
|
34.9%
|
PHPStorm
|
9.0%
|
Visual Studio
|
34.3%
|
NetBeans
|
8.2%
|
Notepad++
|
34.2%
|
IPython / Jupyter
|
7.4%
|
Sublime Text
|
28.9%
|
Emacs
|
4.1%
|
Vim
|
25.8%
|
Rstudio
|
3.3%
|
IntelliJ
|
24.9%
|
RubyMine
|
1.6%
|
Android Studio
|
19.3%
|
TextMate
|
1.1%
|
Eclipse
|
18.9%
|
Coda
|
0.6%
|
Atom
|
18.0%
|
Komodo
|
0.6%
|
PyCharm
|
12.0%
|
Zend
|
0.4%
|
Xcode
|
10.6%
|
Light Table
|
0.2%
|
Các nhóm công nghệ liên quan
Hình sau là các nhóm công nghệ liên quan,
Một số hướng đang được quan tâm nhiều
– Web
– Mobile
– IoT
– Machine Learning
– Data Science
1.3 Theo nghề web, nên học gì?
Muốn làm web cần học chuyên môn và tối thiểu phải biết sử dụng tiếng Anh.
Về khả năng sử dụng tiếng Anh, bước đầu tiên cần phải có là khả năng đọc để hiểu tài liệu chuyên ngành bằng tiếng Anh. Để hiểu được tiếng Anh chuyên ngành, cần hai thứ: từ vựng là quan trọng nhất, sau đó đến ngữ pháp (cấu trúc câu, mệnh đề, chia động từ, thể bị động, thể chủ động, các từ loại).
Ví dụ một cách học tiếng Anh chuyên ngành:
– Chọn một chủ đề bạn quan tâm (về HTML chẳng hạn)
– Đọc sách/tài liệu tiếng Việt về HTML trước, chọn cuốn sách/tài liệu nào mà tác giả hay ghi các thuật ngữ tiếng Anh đi kèm là tốt nhất
– Đọc hiểu hoặc làm theo sách/tài liệu tiếng Anh về HTML
– Nếu được, nên tập dịch tài liệu từ tiếng Anh ra tiếng Việt
– Trong quá trình học, nên viết các từ tiếng Anh chưa biết nghĩa ra giấy, tra nghĩa của nó, viết một hai lần thôi, chứ đừng viết liền một lúc cả trăm lần từ đó, điều này làm mất thời gian và cũng sẽ quên. Sau này nếu gặp lại từ này mà mình chưa nhớ nghĩa, thì lại viết lại và tra nghĩa lại, cho tới khi nào thực sự nhớ được từ và nghĩa của nó thì thôi, không phải viết và tra nghĩa nữa. Qua việc viết, từ mới cùng với nghĩa của nó sẽ đi vào đầu mình lúc nào không hay!
Ban đầu cần học để có thể đọc hiểu được tài liệu chuyên môn bằng tiếng Anh, sau đó học nghe, nói, viết; nếu học thêm được các ngoại ngữ khác càng tốt (tiếng Nhật chẳng hạn).
Về chuyên môn, bảng dưới đây là liệt kê một số những thứ cần học mang tính tham khảo, người học sẽ cảm thấy việc học nhẹ nhàng và hiệu quả hơn nếu học đúng theo trình tự. Tuy nhiên, nếu tự học hoặc vì điều kiện nào đó mà không thể đáp ứng được đúng thứ tự như trong bảng cũng không sao. Cứ tự tin học, thấy còn thiếu kiến thức gì thì bổ sung từ từ, quan trọng là đam mê, kiên trì và dám bước tới.
Xem bảng minh họa một số thứ cần học (chỉ mang tính tham khảo),
Kiến thức
|
Mô tả chi tiết
|
Kiến thức chung (dù theo front-end hay back-end)
|
- Kiến thức nền về Hệ điều hành, Kĩ thuật lập trình, Cấu trúc dữ liệu và thuật toán, Lập trình hướng đối tượng, Cơ sở dữ liệu
- Kiến thức nền về WWW, Mạng máy tính
- Kĩ năng và thái độ về khía cạnh kĩ thuật (cách viết mã, lựa chọn giải thuật, tổ chức mã nguồn chuyên nghiệp), cũng như khía cạnh nghề nghiệp (cách làm việc chuyên nghiệp, hiệu quả và hạnh phúc với nghề)
- Phần mềm Quản lý phiên bản/quản lý mã nguồn: Git, SVN, TFS
- AJAX / Web API
- RESTful API / HTTP method
- Cơ bản về lập trình front-end và back-end
|
Front-end
|
- HTML, CSS, JavaScript
- Các thư viện và framework phổ biến (ví dụ: jQuery, Bootstrap, AngularJS, ReactJS, VueJS)
- Responsive design, UI/UX
- Các kiến thức nâng cao (ví dụ: mô hình MVC, design pattern, lập trình bất đồng bộ trong JavaScript)
|
Back-end
|
- Các ngôn ngữ phổ biến: Java, C#, PHP, Ruby, Python, NodeJS
- Cơ sở dữ liệu (SQL, mySQL, MongoDB)
- Mô hình MVC, Design pattern
- Các framework của mỗi ngôn ngữ
- Các kiến thức nâng cao (ví dụ Dependency Injection, Inversion of Control, SOLID)
- Các kiến thức về triển khai, bảo mật
|
Bảng trên là liệt kê các thứ cần học để tham khảo thôi. Để nắm hết các nội dung đó quả là thử thách thực sự, và cũng không cần thiết.
Phương pháp học là:
– Học từ dễ đến khó, học chắc từng khái niệm cơ bản, khi có cái nền tốt rồi, cứ từng bước bồi đắp thêm các kiến thức mới, mọi thứ rất logic và nhẹ nhàng
– Bắt đầu là HTML, CSS, JavaScript, một vài thư viện/framework phổ biến (ví dụ: jQuery, Bootstrap, AngularJS, VueJS, ReactJS)
– Sau đó là một ngôn ngữ back-end nào đó cùng với cơ sở dữ liệu tương ứng (Java, C#, PHP, Python, Ruby, mySQL, SQL), một vài framework phổ biến
– Mục tiêu là hiểu được cách thức để làm được một sản phẩm web hoàn chỉnh (đây chính là học front-end và back-end cơ bản)
– Trong quá trình học sẽ gặp một số khái niệm, mô hình, cố gắng tìm hiểu để nắm bắt
– Làm thực hành thật nhiều, tự làm các dự án từ dễ đến khó
– Học từ các trang dạy làm web tại Facebook/Github/Youtube/Website/Blog hoặc học từ chia sẻ của các anh/chị trong nghề
– Cuối cùng, quan trọng nhất là phải kiên trì, chăm chỉ, “cứ đi ắt sẽ đến!”.
1.4 Theo nghề lập trình ứng dụng Desktop học gì?
Theo Microsoft:
Lựa chọn công nghệ
– UWP (Universal Windows Platform): C#, C++, VB, JavaScript.
Windows 10
– .NET (WinForms, WPF): C#, C++, F#, VB
– Windows API (C++ và Win32): C++ with COM. Tối ưu về tốc độ thực thi
1.5 Giới thiệu môn học
– Mã học phần: CT3111D
– Tên học phần: Lập trình cơ sở dữ liệu
– Số tín chỉ: 4 (2 LT + 2 TH)
– Hình thức đánh giá:
– Chuyên cần (10%) + tập tin ghi chép (10%) + kiểm tra thực hành: 30%
– Thi cuối kỳ: 50% (trên máy)
– Tài liệu tham khảo: bài giảng, tài liệu, bài lab, Internet
– Email giáo viên: legiacong@gmail.com
– Tài nguyên môn học lấy tại đây (cập nhật thường xuyên): https://drive.google.com/open?id=1CgBCZg44WUhd1hRBbOsGSlRVNEnmOovx
Nội dung môn học:
– Nắm được các khái niệm liên quan đến CSDL
– Lập trình cơ sở dữ liệu với Windows Form
– CRUD (Create, Read, Update & Delete)
– LinQ
– Entity Framework
2. Lập trình WinForms
2.1 Cài đặt Visual Studio
Danh sách các phiên bản Visual Studio, C# và Framework .NET[9]
Visual Studio
|
Phiên bản
|
.NET framework
|
Năm
|
Visual Studio 2019
|
16.0
|
Chưa biết
|
Chưa biết
|
Visual Studio 2017
|
15.0
|
3.5 – 4.7
|
March 7, 2017
|
Visual Studio 2015
|
14.0
|
2.0 – 4.6
|
July 20, 2015
|
Visual Studio 2013
|
12.0
|
2.0 – 4.5.2
|
October 17, 2013
|
Visual Studio 2012
|
11.0
|
2.0 – 4.5.2
|
September 12, 2012
|
Visual Studio 2010
|
10.0
|
2.0 – 4.0
|
April 12, 2010
|
Visual Studio 2008
|
9.0
|
2.0, 3.0, 3.5
|
November 19, 2007
|
Visual Studio 2005
|
8.0
|
2.0, 3.0
|
November 7, 2005
|
Visual Studio .NET 2003
|
7.1
|
1.1
|
April 24, 2003
|
Visual Studio .NET (2002)
|
7.0
|
1.0
|
February 13, 2002
|
Visual Studio 6.0
|
6.0
|
N/A
|
June 1998
|
Visual Studio 97
|
5.0
|
N/A
|
February 1997
|
Bản Visual studio nào miễn phí, bản nào phải trả tiền?
Ví dụ, với Visual Studio 2017 thì nên chọn bản miễn phí là Community.
Bản phải trả tiền là Professional và Enterprise
Đọc thêm tại đây: https://visualstudio.microsoft.com/vs/compare/
Lab 1. Chọn phiên bản và cài đặt Visual Studio
Câu hỏi 1. Bạn đã và sẽ áp dụng mô hình bloom vào việc học như thế nào?
Câu hỏi 2. Bạn dự định làm gì sau khi ra trường, bạn đã, đang và sẽ tập trung học những kiến thức gì?
Câu hỏi 3. Phân biệt Visual Studio, .NET framework và C#?
Câu hỏi 4. Phân biệt code editor và IDE?
2.2 Tổng quan về lập trình WinForms
Bài 1: Tổng quan về lập trình WinForms
WinForms[1] hay Windows Forms là một thư viện hỗ trợ lập trình các ứng dụng chạy trên desktop, laptop và tablet.
Nó là một thành phần trong Framework .NET của Microsoft.
Ra đời năm 2003, tới năm 2014 Microsoft ngưng cập nhật các chức năng mới cho WinForms.
Ưu điểm của WinForms là đơn giản, lập trình dễ dàng.
Xem hình minh họa nền tảng .NET 3.0,
WPF
WPF (Windows Presentation Foundation) là công nghệ kế tiếp của WinForms, dùng để xây dựng các ứng dụng cho các máy tính chạy Windows.
WPF ra đời năm 2006, sử dụng XAML để làm giao diện.
Có nhiều tính năng nổi trội hơn so với WinForms.
2.3 Form
Bài 2. Tổng quan về Form
</////hết
buổi 1
Phân biệt Solution và Project?
[A solution is a container for projects, and tracks dependencies between projects.]
[A solution is like a house, a project like a room. Each room provides a piece of functionality whereas the house, a container of rooms, provides the means to link the rooms together and organize them appropriately.]
[It doesn't help that Visual Studio seems to make things more confusing. "New Project" actually creates a new SOLUTION containing a project. "Open Project" actually opens a solution containing one (or many) project. (The file menu says "Open Project/Solution" but it really is opening solutions. There is no "Close Project" only "Close Solution" which is accurate.
So, in VS you are always working within a solution. Many solutions contain only one project and newer developers are likely to think of them as the same thing. However you can add other projects into a solution.]
Lab 2. Thực hiện thuần thục các thao tác sau: tạo project, lưu project/solution, đóng solution, mở lại project/solution, thêm project vào solution
Ngôn ngữ biên dịch (compiled language) là loại ngôn ngữ cần được dịch toàn bộ mã nguồn chương trình ra mã máy hoặc bytecode mới có thể thực thi được. Có đầu vào (chương trình) tường minh. Ví dụ: C#, C++, Java
Ngôn ngữ thông dịch (interpreted language) là loại ngôn ngữ khi nào thực thi mới dịch mã nguồn sang mã máy. Có đầu vào tường minh. Ví dụ: PHP, Python, JavaScript
Ngôn ngữ kịch bản (scripting language) là loại ngôn ngữ mà mã nguồn sẽ được thực thi từ đầu đến cuối như một “tờ kịch bản”, không có đầu vào tường minh. Ngôn ngữ kịch bản thuộc kiểu ngôn ngữ thông dịch. Ví dụ: JavaScript, PHP
Một số câu hỏi cần tìm hiểu:
Câu hỏi 5. Hàm static void main() để làm gì? Nó nằm ở tập tin nào trong một project?
Câu hỏi 6. Mối liên hệ giữa hai tập tin FormXYZ.Designer.cs và FormXYZ.cs là gì?
Câu hỏi 7. Cách lấy một thiết kế form từ nơi khác đưa vào project?
Câu hỏi 8. Thứ tự các hàm sẽ được chạy của một chương trình đơn giản?
Có thể định dạng và thiết lập các thuộc tính cho form và các control của nó bằng properties.
</////hết buổi 2
[1] https://tusach.thuvienkhoahoc.com/wiki/H%E1%BB%87_th%E1%BB%91ng_ph%C3%A2n_lo%E1%BA%A1i_c%C3%A1c_m%E1%BB%A5c_ti%C3%AAu_c%E1%BB%A7a_Bloom
[7] https://quantrimang.com/cac-phien-ban-ms-sql-server-145297
[8] https://sqlserverbuilds.blogspot.com/
[9] https://en.wikipedia.org/wiki/Microsoft_Visual_Studio
Bài tiếp theo: Lập trình CSDL_02_Label Button Textbox
Xem thêm: Danh sách các bài học