Getting Started
Course information
• Course Title: Net Centric Programming / IT096IU
• Time/Venue:
• Lab:
• Instructor: Le Thanh Son
• Course resources: Blackboard
• Email: ltson@[Link]
• Prerequisite : C Programming, Computer Networks
• References:
– Adam WoodBeck, Network Programming with Go, No Starch Press 2021
– Jan Newmarch (auth.) - Network Programming with Go_ Essential Skills for
Using and Securing Networks-Apress (2017)
– Go Programming Language Books
Course Objective
• This course will concentrate on learning the basics of
how internetworking applications are built and
designed. This will be the foundation for moving into
more advanced application programming
• This course discusses several programming topics
support for developing network applications: TCP/IP,
stream, threads, socket, client/server…
• Programming tools using for this course: start with C
then move to Perl and Python Golang (Go)
Grading (TBA)
• Quizzes, Presentation, Lab (~40%)
• Midterm (Project): 30%
• Final: 30%
• Project: TBA
Project
• Group Project (up to 2 students, depends on
the topic)
• Topic will be given
• Final demonstration will be held
Project
• Same project will be given to all groups, will
be posted on site
• We will use lab session for this
• Do your stuff (survey, design, coding,
testing…), present it in front of us and discuss,
get comments and questions from others
• We will have project competition at the end of
each project schedule time
Presentations
• Just like old time but different
• Demonstrations
• In-class discussion right after:
– Present: 7
– QnA: 3
• Quiz
Draft Schedule
Week Topics (also Group Presentation Topics)
1 Getting started, Introduction…
2 The Go Programming Language: intro, basic Go program, variables and primitive data types,
array and slice, map, struct, control structures, pointer, function, user type method, concurrency,
interface: G14
3 Socket Programming: TCP, UDP
4 Data Serialization: JSON, BSON, Gob, Protocol Buffers
5 Custom Protocol Design
6 Building HTTP Services (client, server). REST
7 GRPC
8 Virtual Machine vs Containers. Introduction to Docker. Deploying app using Docker
9 Working with Database: Mock Database, SQL and NoSQL
10 Caching. Redis
11 Storage: AWS S3 and MinIO
12 Web Socket
13 Security, API Design and Documentation
14 Logging/Monitoring
Final words
• PRACTICE
• Feel free to discuss with other students
• Feel free to correct me
• Make suggestion
• Contribute to the course, share resources
• But DO NOT SHARE YOUR CODE for other
students/groups
• DO NOT CHEAT
QnA