Skip to content

Commit

Permalink
about us page restructure
Browse files Browse the repository at this point in the history
  • Loading branch information
aadhavanpl committed Apr 4, 2024
1 parent 8f1b16f commit 5b2ed46
Showing 1 changed file with 35 additions and 8 deletions.
43 changes: 35 additions & 8 deletions docs/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,30 +19,57 @@ const members = [
{ icon: 'linkedin', link: 'https://aadhii.in/' }
]
},
// add more here
]
</script>

# About

## Overview

eXpServer is an educational web server built entirely in C language, designed to aid students in understanding the inner workings of web servers through the implementation of one from scratch using Linux socket programming APIs.
The eXpServer project is an educational web server implementation built entirely in the C language. It is designed to help individuals understand the inner workings of web servers by guiding them through the process of building one from scratch using Linux socket programming APIs.

The project is structured to be offered as an undergraduate Networks Lab course for Computer Science and Engineering courses in colleges. Through a carefully crafted ‘Roadmap’, students are systematically guided through various stages, each addressing specific objectives. This incremental learning approach helps students keep track of where they are in terms of course progression while also enabling instructors to assess their development against predefined milestones.
### Intended audience

In the early stages of the roadmap, much of the code is directly provided to the student. However, as the stages progress most of the code is to be written by the students themselves with the documentation outlining the requirements that the functions and modules should meet. The intention behind this approach is to gently ease the learning curve, thereby facilitating the student's initial engagement with the project. As they progress, the aim is to foster independent critical thinking, encouraging students to devise their own solutions rather than relying solely on the documentation to guide them.
The project is structured to be offered as an undergraduate Networks Lab course for Computer Science and Engineering programs in universities and colleges. It is ideal for students pursuing a Computer Science degree, particularly those who are currently enrolled or have previously enrolled in a networking theory course.

Having an understanding of basic networking concepts such as, client server model, TCP/IP protocol stack, OSI model etc. is a good starting point. Most of the concepts associated with building eXpServer are explained in enough detail through guides available in the documentation. These guides are linked from appropriate parts of the roadmap to explain the concept related to the stage the student is currently in. Links to external resources that further explain the concepts are also included for extended reading.
The implementation of the project is well-suited for a single semester of a Networks laboratory course or as a programming assignment associated with an undergraduate Networks theory course.

Upon completing the project, we will have crafted a fully functional web server compatible with various Linux distributions. eXpServer will possess a range of capabilities, including serving static files, reverse proxying requests, load balancing, performing gzip compression, implementing caching mechanisms, rate limiting requests, supporting TLS encryption and so on. Notably, the server will maintain high performance standards, efficiently handling numerous requests by utilising multiple CPU cores.
Furthermore, individuals interested in understanding the workings of web servers and eager to implement one themselves are welcome to undertake this project.

This project provides students with practical experience in understanding the architecture of modern web servers tasked with managing immense internet traffic. Through hands-on engagement with eXpServer development, students gain insight into the complexities of efficiently handling dynamic web traffic, preparing them for real-world challenges faced in the industry.
### Prerequisites

Since eXpServer will be written entirely in C, the primary prerequisite is a familiarity with the C programming language at the level of a junior year undergraduate CS student.

Having an understanding of basic networking concepts such as, client server model, TCP/IP protocol stack, OSI model etc. may be beneficial, but is not necessary.

Most of the concepts associated with building eXpServer are explained in enough detail through guides available in the documentation. These guides are linked from appropriate parts of the roadmap to explain the concept related to the stage the student is currently in. Links to external resources that further explain the concepts are also included for extended reading.

### What to expect

Participants in the eXpServer project can anticipate a thorough learning journey centred on constructing an operational web server from scratch. They will gain a deep understanding of networking fundamentals, encompassing the client-server model, TCP/IP protocol stack, OSI model, and diverse networking protocols, all through practical implementation and experimentation. Additional areas of learning encompass C programming, Linux system programming, problem-solving, critical thinking, and the software development cycle.

A structured [roadmap](/roadmap/) guides individuals through various stages, systematically addressing specific objectives. This incremental learning approach helps them keep track of where they are in terms of course progression while also enabling instructors to assess their development against predefined milestones.

Upon completing the project, the individual will have crafted a functional web server compatible with various Linux distributions.

eXpServer will incorporate a range of features, including but not limited to:

- Serving static files
- Reverse proxy functionality
- Load balancing capabilities
- Gzip compression
- Implementing caching mechanisms
- Rate limiting for requests
- TLS support

This project provides individuals with practical experience in understanding the architecture of modern web servers. Through hands-on engagement with eXpServer development, individuals gain insight into the complexities of handling dynamic web traffic, preparing them for real-world challenges faced in the industry.

## Authors

<VPTeamMembers size="small" :members="members" />
The content in the website and the documentation has been authored in the [Department of Computer Science and Engineering](https://minerva.nitc.ac.in/)[National Institute of Technology Calicut](http://nitc.ac.in/) under the guidance of [Dr. Murali Krishnan K](https://nitc.ac.in/department/computer-science-amp-engineering/faculty-and-staff/faculty/bdb94a31-f29a-4fb0-b4d5-7db9be64edef) and [Dr. Vinod Pathari](https://nitc.ac.in/department/computer-science-amp-engineering/faculty-and-staff/faculty/f6ebabe0-ef35-4efd-964a-59325844b7c5).

Developed under the guidance of [Dr. Vinod Pathari](https://nitc.ac.in/department/computer-science-amp-engineering/faculty-and-staff/faculty/f6ebabe0-ef35-4efd-964a-59325844b7c5) and [Dr. Murali Krishnan K](https://nitc.ac.in/department/computer-science-amp-engineering/faculty-and-staff/faculty/bdb94a31-f29a-4fb0-b4d5-7db9be64edef) of National Institute of Technology Calicut.
<VPTeamMembers size="small" :members="members" />

## License

Expand Down

0 comments on commit 5b2ed46

Please sign in to comment.