AttainU Software Engineering Syllabus

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Software Engineering

Full-Stack Web Development

Syllabus
Gear Up

Command Line
● File management
● Linux commands

Version Control System


● Github

Shallow Dive

HTML & CSS


● HTML Tags
● CSS properties & values
● CSS selectors
● CSS transitions, gradients & animations
● CSS box model
● CSS framework - Twitter Bootstrap

Javascript
● Types, operators, statements, objects, functions & classes
● Dom manipulation, HTTP requests & CSS scripting
● jQuery and Lodash
● HTML5 APIs

Web Architecture
● Client-server model

Node
● Introduction to ES6
● The event loop
● Modules & the NPM
● Commonly used Node APIs & modules

Express
● Installation, Express generator, Routing & Static files
● Templates, Middlewares & Database integration
● Authentication & authorization
● Introduction to REST APIs
● REST APIs using Express

Databases
● Introduction to NoSQL databases
● NoSQL vs RDBMS
● MongoDB
○ MongoDB extended JSON
○ Databases & collections
○ Data model & documents
○ Indexes, Aggregations & Transactions
○ Mongoose library
○ Using MongoDB with Express

Shallow Dive Project

Deep Dive Front End

HTML & CSS


● CSS flexbox
● CSS preprocessors - SASS and LESS
● SEO fundamentals
● Design fundamentals - Colour theory, Typography, Whitespace & Interface design

Javascript
● ES6 - Tools, Destructuring, Arrow functions, Template literals, Classes, Let & Const,
Iterators, Generators & Modules
● Package managers - NPM & Yarn
● Linters - ESlint & JSlint

React & Redux


● JSX
● Events, Components & Props
● Virtual DOM & Lifecycle methods
● Redux - Actions, Reducers & Store
● React app deployment
● React app testing - Mocha, Chai & Jasmine
● Progressive web apps

Data Visualization
● Introduction to visualization
● Introduction to D3

Deep Dive Front End Project

Deep Dive Back End

Node
● Node Buffers, Timers & Streams
● Filesystem, TCP & HTTP
● Debugging & Unit Testing
● Character encodings - Unicode

Express
● Installation, Express generator, Routing & Static files
● Templates, Middlewares & Database integration
● Authentication & authorization
● Introduction to REST APIs
● REST APIs using Express
● Search engines (full text)
● Express app deployment
Devops
● Introduction to AWS & Heroku
● Remote login using SSH
● Setting up web server, DB server and HTTPS in Linux
● Basic server security

Databases
● Relation databases vs NoSQL databases
● SQL (using PostgreSQL)
○ Creating and populating a relational database
○ Querying & filtering
○ Grouping & aggregates
○ Subqueries & Joins
○ Index
○ Transactions
○ Introduction to ORM & Sequelize
○ Using Postgresql with Express

Core Software Engineering

Python programming language


● Types & operators
● Statements, exceptions, functions & classes
● Modules, packages & tools

Data Structures & Algorithms


● Data structures
○ Linked list & Doubly linked list
○ Queue, Priority Queue & Stack
○ Heap
○ Hash table
○ Tree
○ Graph (directed & undirected)
● Algorithms
○ Algorithm complexity & the Big O notation
○ Search
○ Sort
○ Linked list
○ Trees
○ Graphs
○ Basic cryptography
● Problem-solving
○ Brute force algorithms
○ Greedy algorithms
○ Divide and conquer
○ Dynamic programming
○ Backtracking

Operating Systems
● The role of operating systems
● OS organization - the kernel, device drivers & user space
● Features - Abstraction, multi tasking, security & performance
● Communicating with the Kernel - System calls & privileges
● The process model, context switching & scheduling
● Virtual memory
● I/O fundamentals

Computer Networks
● Reference models
○ Physical layer, data-link layer, network layer, transport layer & the application
layer
○ TCP/IP reference model
○ OSI reference model
● Protocols
○ TCP/IP
○ DNS, FTP, SMTP & POP, HTTP, SCTP
○ IPV4 & IPV6
● Network examples (Internet, 802.100 & 4G mobile networks)
● Linux networking tools
● Network security

Computer Architecture
● Number representation (binary, octa and hexa)
● The CPU
● Memory
● Peripheral systems
● "Small" to "Big" systems and SMP
● Programming languages
○ Assembly and linking
○ Compiled & interpreted programs
○ Concept of dynamic linking
○ Building of a Linux executable

System Design
● OOP & Design patterns
● SOLID, KISS & YAGNI

Software Development Methodologies


● States - planning, designing, programming, documenting, testing, and bug fixing
● Different methodologies
○ Waterfall
○ Spiral
○ Prototyping
○ Agile

Capstone Project

You might also like