Before a Python backend internship, you need six things: working Python, basic data structures, SQL queries, everyday Git, an understanding of HTTP, and comfort in a Linux terminal. You do not need frameworks first. If you can finish the self-test tasks below without copying a solution, you are ready to start.
This is an independent guide written for students of SRM Institute of Science and Technology. It is not issued by, approved by or endorsed by the institution. It makes no claims about SRM’s syllabus or its internship rules, because those can change by programme, batch and year. The college-specific part of the article therefore shows you how to confirm them yourself.
What “backend internship ready” means
A backend engineer builds the part of an application that users never see. It receives requests, applies rules, reads and writes a database, and returns a response. A short internship, especially a two-week one, gives you little time to learn fundamentals while also building something. Interns who do well usually arrive able to read an error message, write a small function, query a table, commit code and test an endpoint.
The checklist below is built around that loop. Each area has a minimum standard, a self-test and a piece of evidence you can keep, such as a file in a Git repository. Evidence matters because “I know SQL” is hard to judge, while a repository with ten working queries is easy to judge.
The prerequisites scorecard
Score yourself honestly. Give 0 if you cannot start the task, 1 if you can finish it with help from documentation, and 2 if you can finish it unaided. A total of 10 or more out of 12 means you can begin. Anything lower tells you where to spend your preparation days.
| Area | Minimum standard | Self-test (30-45 minutes) | Evidence to keep | Score (0-2) |
|---|---|---|---|---|
| Python | Functions, dictionaries, file reading, exceptions, virtual environments | Write a script that reads a CSV, counts rows per category and prints the result as JSON | summary.py plus sample CSV |
|
| Data structures basics | Choose between list, dict, set and tuple; explain time cost of lookups | Find duplicates in a list of 10,000 items in one pass | Short function with a comment on its time complexity | |
| SQL | SELECT, WHERE, JOIN, GROUP BY, INSERT, UPDATE, primary and foreign keys | Design two related tables and write five queries, one using a JOIN and one using GROUP BY | schema.sql and queries.sql |
|
| Git | Init, add, commit, branch, merge, push, resolve a simple conflict | Create a repository, make a branch, cause a conflict on purpose and resolve it | A pushed repository with a readable history | |
| HTTP | Methods, status codes, headers, JSON bodies, difference between path and query parameters | Call a public API with curl and then with Python, and explain every part of the response |
A note listing the request, response and status code | |
| Linux command line | Navigate, search, view logs, set permissions, use pipes, environment variables | Find the ten most frequent words in a text file using only shell commands | A one-line command saved in a notes file |
Free 2-Week CareerSwami Internship
Online, 14 days, with a free offer letter and a free completion certificate once you finish the work. Check with your college that it fits your requirement before you enrol.
1. Python: the language you will actually use
Backend work in Python is mostly ordinary Python. Frameworks such as Flask, Django and FastAPI sit on top of the same functions, dictionaries and exceptions you learn in the first weeks of a course. Reading a framework’s documentation is far easier once those basics are automatic.
What to be able to do
- Write functions with default arguments and return values, and know why a function should usually return data rather than print it.
- Work with lists, dictionaries and comprehensions without looking up the syntax.
- Read and write text, CSV and JSON files using the standard library (
csv,json). - Handle errors with
tryandexcept, and raise your own exceptions with a useful message. - Create a virtual environment, install a package with
pipand record dependencies in arequirements.txtfile. - Understand the basics of classes: attributes, methods and what
selfrefers to. - Read a traceback from the bottom up and identify the line that caused the failure.
Self-test tasks
- Write
word_count(path)that returns a dictionary of word frequencies from a text file, ignoring case and punctuation. - Make the function raise a clear error if the file does not exist, and catch that error in the calling code.
- Write a small class
Taskwith a title, a done flag and a method that marks it complete. Store five tasks in a list and print only the unfinished ones. - Create a fresh virtual environment, install
requests, and fetch any public JSON URL. Print one field from the response.
2. Data structures basics: choosing the right container
You are not preparing for a competitive programming contest. For backend work, the useful skill is knowing which structure makes a task cheap. A lookup in a dictionary or set is typically fast regardless of size, while searching a long list item by item gets slower as the list grows. That one idea explains many real performance problems.
What to be able to do
- Explain when to pick a list, tuple, set or dictionary, and give one backend example of each.
- Describe, in plain words, what O(1), O(n) and O(n log n) mean.
- Use a stack and a queue, for example with
listandcollections.deque. - Sort records by more than one key, such as by department and then by name.
- Group items by a key using a dictionary of lists.
- Describe how a hash table works at a high level, and why dictionary keys must be hashable.
Self-test tasks
- Given a list of user emails, return the ones that appear more than once. Do it with a set rather than nested loops.
- Given a list of order dictionaries, group them by customer ID and compute each customer’s total.
- Check whether a string of brackets such as
{[()]}is balanced using a stack. - Write two lines explaining why checking membership in a set beats checking it in a list for large data.
3. SQL: where most backend data lives
Almost every backend project stores data in a relational database. You can learn on SQLite, which ships with Python and needs no server setup, then move to PostgreSQL or MySQL later. The core statements are the same.
What to be able to do
- Create tables with sensible types, a primary key and a foreign key.
- Filter and sort with
WHEREandORDER BY, and limit results. - Combine tables with
INNER JOINandLEFT JOIN, and say when the two differ. - Aggregate with
COUNT,SUMandAVGtogether withGROUP BYandHAVING. - Insert, update and delete rows, and understand why an
UPDATEwithout aWHEREclause is dangerous. - Explain what an index does and what a transaction is.
- Use parameterised queries from Python so user input is never pasted into SQL strings.
Self-test tasks
- Create
studentsandenrolmentstables linked by a foreign key. Insert at least six rows in total. - Write a query that lists each student with the number of courses they are enrolled in, including students with none.
- Write a query that returns only courses with more than two students.
- From Python, use the
sqlite3module to run a query with a?placeholder instead of string formatting.
4. Git: the working habit employers expect
Git is how code moves between people. In a short internship you may submit your work through a repository, so clean commits are part of the deliverable. The goal is not to memorise rare commands but to make small, well-labelled commits and recover calmly when something goes wrong.
What to be able to do
- Initialise a repository, stage files selectively and write a commit message that says what changed and why.
- Create, switch and merge branches.
- Read
git status,git diffandgit log --onelineand know what each tells you. - Use a
.gitignorefile so virtual environments, secrets and cache files are never committed. - Push to a remote such as GitHub and clone a repository.
- Resolve a merge conflict by editing the marked section and committing the result.
Self-test tasks
- Create a repository with a
.gitignorethat excludesvenv/and.env. Confirm withgit statusthat they are ignored. - Make three commits on a branch, each doing one thing, then merge the branch into the main branch.
- Edit the same line on two branches, merge them and resolve the conflict.
- Undo your last commit while keeping the changes in your working folder (look up
git reset --soft), then recommit.
5. HTTP: the contract between client and server
Every backend you build speaks HTTP. If you understand the request and response format, framework behaviour stops feeling magical. This is the area students most often skip, and it shows quickly when an endpoint returns the wrong status code or ignores a header.
What to be able to do
- Name the main methods (GET, POST, PUT, PATCH, DELETE) and say which are meant to change data.
- Recognise common status codes: 200, 201, 204, 400, 401, 403, 404, 422 and 500, and choose the right one for a situation.
- Explain the difference between path parameters, query parameters and a request body.
- Read headers such as
Content-Type,AuthorizationandAccept. - Describe what JSON looks like and how it maps to Python dictionaries and lists.
- Explain at a basic level what a REST-style API is, and what “stateless” means.
- Distinguish authentication (who you are) from authorisation (what you may do).
Self-test tasks
- Use
curl -iagainst any public JSON API and label the status line, headers and body in a notes file. - Send a POST request with a JSON body using
curlor therequestslibrary. Note which header tells the server the body is JSON. - For each situation, write the status code you would return: a created record, a missing record, malformed input, a user without a token, and an unexpected crash.
- Write a tiny endpoint in any framework that returns
{"status": "ok"}and test it from the terminal.
6. Linux command line: the environment servers run in
Most deployed backends run on Linux. You do not need to be an administrator. You need to move around, inspect files, read logs and run your own code without a graphical interface. Windows users can practise through WSL, and macOS users already have a similar shell.
What to be able to do
- Navigate with
pwd,ls,cd, and manage files withmkdir,cp,mvandrm. - Read files with
cat,head,tailandless, and follow a growing log withtail -f. - Search with
grepandfind. - Chain commands with pipes, and redirect output with
>and>>. - Understand file permissions shown by
ls -land change them withchmod. - Set and read environment variables, and explain why secrets belong there rather than in code.
- List and stop processes with
psandkill.
Self-test tasks
- Using only shell commands, find the ten most common words in a text file (hint: combine
tr,sort,uniqandhead). - Create a script file, make it executable and run it.
- Export an environment variable and print its value from a Python script using
os.environ. - Search a folder recursively for every file containing the word
TODO.
Worked example: one small project that tests all six areas
The following is an illustrative exercise, not a prescribed assignment. It has not been executed here, so treat the snippets as a starting sketch that you should run and debug yourself. The idea is to build a tiny “notes” service and touch every prerequisite once.
Step 1: Set up (Linux, Git, Python)
In the terminal, create a folder, start a repository, create a virtual environment and add a .gitignore that excludes the environment folder and any .env file. Make a first commit titled “Initial project skeleton”.
Step 2: Model the data (SQL, data structures)
Two tables are enough: users and notes, where each note has a user_id foreign key. An illustrative schema:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
email TEXT NOT NULL UNIQUE
);
CREATE TABLE notes (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id),
body TEXT NOT NULL,
created_at TEXT NOT NULL
);
A query to show how many notes each user has, including users with none:
SELECT u.email, COUNT(n.id) AS note_count
FROM users u
LEFT JOIN notes n ON n.user_id = u.id
GROUP BY u.id, u.email;
Step 3: Expose it over HTTP (Python, HTTP)
Choose a framework you are comfortable reading. Define two routes: one that accepts a POST with a JSON body and creates a note, and one that accepts a GET and returns a user’s notes. Decide in advance what each route returns on success and on failure.
| Route | Situation | Suggested status |
|---|---|---|
| POST /users/1/notes | Note created | 201 |
| POST /users/1/notes | Body field missing or empty | 400 or 422 |
| GET /users/99/notes | User does not exist | 404 |
| GET /users/1/notes | User exists, has notes | 200 |
Step 4: Test from the command line (Linux, HTTP)
Start the server in one terminal and use curl -i from another. Check that each situation in the table above produces the status you expected. Save the commands you used in a NOTES.md file.
Step 5: Commit properly (Git)
Use a branch for the endpoint work, make at least three focused commits, and merge. Look at git log --oneline afterwards. If the history reads like a story, you have done it well.
A seven-day preparation plan
If your scorecard shows gaps, this order works well because each day builds on the last. Adjust the time to your timetable.
| Day | Focus | Output |
|---|---|---|
| 1 | Linux basics and Git setup | Repository with .gitignore and a command notes file |
| 2 | Python functions, files and exceptions | Word-count and CSV summary scripts |
| 3 | Data structures tasks | Duplicates, grouping and balanced-brackets functions |
| 4 | SQL schema and queries | schema.sql and queries.sql |
| 5 | HTTP with curl and requests |
Annotated request and response notes |
| 6 | Notes service from the worked example | Working two-route service in a branch |
| 7 | Review, merge conflicts, rescore | Updated scorecard and a clean repository |
Mistakes that slow beginners down
- Starting with a framework tutorial. Copying a tutorial without understanding requests and queries leaves you stuck at the first unexpected error.
- Skipping SQL in favour of an ORM. Object-relational mappers generate SQL. If you cannot read the SQL, you cannot debug the slow query.
- Committing secrets. API keys and passwords in a repository are hard to remove completely. Use environment variables from the start.
- Printing instead of returning. Functions that print their results are hard to test and reuse.
- Ignoring status codes. Returning 200 with an error message inside the body confuses every client that calls your API.
SRMIST and a Python backend internship: where it fits in your degree
The scorecard above applies to any student, but SRMIST’s own rules decide how an internship sits in your programme. The B.Tech/M.Tech (Integrated) rules are set out in the Regulations 2021 document, which says it was approved by the Academic Council in March 2022. Under Regulation R 2.7, a student may do a Semester Internship in industry, a research centre or specialised labs of a higher education institution for 12 to 15 weeks in the eighth semester. The department’s Project Review Committee/Panel must approve it. A short skills-building internship done earlier is a different thing from this semester internship, so do not assume the two are interchangeable.
The same regulation requires a faculty mentor, periodic reviews, and a report assessed by examiners appointed by the head of department. In practice, a backend project with a Git history, a SQL schema and a README gives you concrete material to show a mentor. R 2.7 also bars students continuing to the M.Tech (Integrated) programme from taking the Semester Internship. The passages of the regulations checked do not mention online internships, so ask before assuming one would be accepted for any formal purpose.
For B.Tech CSE, the Regulations 2021 curriculum lists 21CSP403L Internship (5 credits) as an eighth-semester alternative to the Major Project courses. That version dates from 2021, so check which curriculum applies to your admission year. Your Python, database and operating systems courses are the natural places to map the scorecard’s six areas.
Timing matters too: SRMIST publishes a College of Engineering & Technology academic schedule for 2026-27. Its excerpt shows odd-semester test dates in October 2026 and a tentative even-semester enrolment day in January 2027. Plan the seven-day preparation plan around those dates rather than test weeks.
If you want a short, no-cost way to practise, CareerSwami offers a free two-week (14-day) online internship across 26 tracks, with a free offer letter and completion certificate after successful completion. It carries no stipend, academic credit or placement promise, and CareerSwami is not affiliated with SRMIST.
Checks to make before you rely on any internship at SRMIST
- Find your regulations: confirm whether your batch follows Regulations 2021 or a later version, and read R 2.7 in that version.
- Ask your department: ask your faculty advisor or Project Review Committee whether an external or online internship is permitted and who approves it.
- Check your curriculum: look for the internship course code in your own programme’s curriculum, and whether it replaces Major Project courses.
- Confirm documents: ask what offer letter, completion certificate, report or logbook format your department expects.
- Check the calendar: compare your plan with the current academic schedule for your campus and programme.
- Use the Career Centre: ask the SRMIST Career Centre whether it advises on external internships.
Frequently Asked Questions
Do I need to learn Django, Flask or FastAPI before a backend internship?
Not before you start. Fundamentals matter more: Python, SQL, HTTP and Git. A framework is easier to pick up once you know what a request, a route and a query are. Learn one framework during the internship, ideally the one your task uses.
How good does my Python need to be?
You should be able to write short functions, handle files and JSON, catch exceptions and read a traceback without help. If the word-count and CSV tasks in this article take you more than an hour, practise more before you begin.
Is SQLite enough for practice?
Yes, for the basics. SQLite lets you practise schemas, joins, grouping and parameterised queries with no server to install. You can move to PostgreSQL or MySQL later, since the core SQL transfers directly, though some types and functions differ.
How much data structures and algorithms do I need?
For a short backend internship, the basics are enough: lists, dictionaries, sets, stacks and queues, sorting and a rough sense of time cost. Advanced topics such as graphs and dynamic programming matter more for certain interviews than for day-to-day internship tasks.
I use Windows. Can I still practise Linux commands?
Yes. Windows Subsystem for Linux gives you a real Linux shell on Windows, and a cloud or virtual machine also works. Practise the commands in the Linux section there so the habits carry over to servers.
Which Git commands should I know first?
Start with init, clone, status, add, commit, branch, switch or checkout, merge, push and pull, plus log and diff for reading history. Practise a deliberate merge conflict once so it does not surprise you later.
What should I put on my résumé after finishing this checklist?
List the small projects, not the checklist. A notes service with a SQL schema, documented endpoints and a clean Git history is concrete. Link the repository, describe what each route does, and state only what you actually built.
Will completing a free online internship count towards my degree?
That is decided by your college, not by the internship provider. Ask your department in writing whether external or online internships are recognised, what evidence they accept, and whether any approval is needed before you start.
Related Python & Backend Engineering guides
- Chandigarh University Students: Choosing a Python Backend Internship Project with Clear Scope
- Lovely Professional University Students: Building a Python Backend Internship Portfolio with Documented APIs
- RV College of Engineering Students: Python Backend Engineering Internship Interview Preparation
- All Python & Backend Engineering internship guides
Ready to put this into practice?
Join the free two-week CareerSwami online internship in Python & Backend Engineering. The internship, the offer letter and the completion certificate are free.




