Skip to content
September 2026 qualifier: applications close Sun 27 Sep · Week 1 starts Fri 2 Oct
Qualifier Hub

IITM BS Software Testing (BSCS3002): Syllabus and Tips

By Editorial TeamLast reviewed

5 min readData Science
On this page

Software Testing (BSCS3002) is a 4 credit core course at the BSc level of the IITM BS in Data Science. It teaches you to design test cases in a planned way, using coverage rules built on graphs, logic and syntax, instead of guessing inputs. The course page lists no prerequisite, and every student entering the BSc level must take it.

Software Testing at a glance

CodeCreditsLevelPrerequisites
BSCS30024Degree (level 3)None

The course page lists Prof. Meenakshi D'Souza as the instructor and calls the course type "Core Option I". The handbook table tags it "Core_BP", with 4 credits and no prerequisite. So the two sources agree on everything except the label. The table (updated 18 March 2026) marks it as offered in May 2026, September 2026 and January 2027.

What you learn in Software Testing

The course has 12 weeks. You can think of it in five blocks.

  • Week 1: the basics. Why testing matters, where it sits in the software life cycle, the key terms, and automated tests with JUnit as the example.
  • Weeks 2 to 4: graphs. A quick review of graphs and graph algorithms, then coverage criteria on graphs. You apply them to source code, data flow, design and integration, specifications and finite state machines.
  • Weeks 5 to 7: logic. Predicates and clauses, logic coverage criteria and how to make one clause decide the result. Then SMT solvers, symbolic execution and concolic execution.
  • Weeks 8 to 10: inputs and syntax. Functional testing from requirements, input space partitioning (ISP), regular expressions and grammars, and mutation testing, including faults and mutation operators for object oriented code.
  • Weeks 11 and 12: real systems. Testing web apps on the client and server side, regression testing, quality metrics, non-functional testing and test-driven development.

The main suggested book is Introduction to Software Testing by Paul Ammann and Jeff Offutt. The page also lists books by Myers, Jorgensen, and Crispin and Gregory.

How Software Testing is assessed

The course page lists weekly online assignments, 2 in-person invigilated quizzes and 1 in-person invigilated end term exam. It does not list an OPPE or a project.

Where it counts

Software Testing is one of the five mandatory courses of the BSc degree level. It is not part of any minor. With the other four core courses, it gives 20 of your 28 BSc credits.

Who finds it hard and how to prepare

The name sounds practical, but the first half is closer to discrete maths. Weeks 2 to 7 are about graphs, paths and logical conditions. If graphs or logic were weak spots for you, this is where you will feel it.

  • Revise graphs before week 2. Go back to the graph weeks of PDSA (BSCS2002). You should be able to find paths and do a traversal without looking anything up.
  • Draw graphs from code. Take a short function with a loop and an if. Draw its control flow graph and list the tests that visit every node and every edge.
  • Write truth tables. For a condition with two or three clauses, find the inputs where changing one clause flips the whole result. This is the core idea of the logic weeks.
  • Break your own code. Change one operator in a small function, say "less than" to "less than or equal", and check whether your tests notice. That is mutation testing in one step.
  • Write a few real unit tests. Even if no exam asks you to write code, writing tests yourself makes the ideas stick.

What to take before and after

Take it with Software Engineering (BSCS3001), which gives you the bigger picture of how software is built. Since JUnit is a Java tool, Programming Concepts using Java (BSCS2005) from the Diploma in Programming helps in week 1. If you enjoy the finite state machines and grammars here, Theory of Computation (BSCS3021) covers them in depth.

Common questions

Do I need to know Java for Software Testing?

The course page does not list Java as a prerequisite. It does use JUnit, a Java testing tool, as its example in week 1. Your Java course from the Diploma in Programming helps with that part.

Is Software Testing harder than Software Engineering?

They are hard in different ways. Software Testing has more formal content, such as graph coverage, logic, SMT solvers and symbolic execution. Software Engineering is more about process and design. Which one feels harder depends on whether you prefer maths-style reasoning or descriptive topics.

What is concolic execution in simple words?

It mixes real runs with symbolic tracking. The program runs on actual inputs, while the tool also records the conditions along the path. It then solves those conditions to find new inputs that take a different path.

Can I take Software Testing in my first BSc term?

Yes. It has no prerequisite, and the handbook asks you to select all five core courses when you enter the BSc level. Just stay within 4 courses in a term.

22 Software Testing handwritten and PDF notes by students

Official sources

All posts in Course guides

Was this page helpful?

Share with your study group:WhatsAppTelegram