After going through Firo's answer and doing a bit of tweaking myself, I solved it like below:
var courseSummaries = session.CreateCriteria<Course>("c")
.CreateAlias("Campus", "cmp")
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("CourseId"), "CourseId")
.Add(Projections.Property("StartDate"), "StartDate")
.Add(Projections.Property("EndDate"), "EndDate")
.Add(Projections.Property("cmp.CampusId"), "CampusId")
.Add(Projections.Subquery(DetachedCriteria.For<StudentEnrolment>("s")
.Add(Restriction.EqProperty("s.Course.CourseId", "c.CourseId"))
.SetProjections(Projections.RowCount()), "TotalStudents")
)
.SetResultTransformer(Transformers.AliasToBean<CourseSummary>())
.List<CourseSummary>();