Determining if someone has read and seen all the questions of a book
What you have written is essentially six independent queries.  Let's drop the pretense that these are correlated subqueries.  Let's also reorder the output columns.  We can also simplify col = A || col = B as col in (A, B).

SELECT (SELECT COUNT(s.id)
          FROM sections s
         WHERE s.chapter_id = ? AND s.module IN (1, ?)
       ),
       (SELECT COUNT(q.id)
          FROM question q
         WHERE q.chapter_id = ? AND q.module IN (1, ?)
       ),
       (SELECT AVG(m.$mkts_col)
          FROM mkts m
         WHERE m.chapter_id = ? AND m.module IN (1, ?)
       ),
       (SELECT COUNT(u.id)
          FROM user_sections u
         WHERE u.chpt_id = ? AND u.user_id = ?
       ),
       (SELECT COUNT(v.id)
          FROM user_questions v
         WHERE v.chpt_id = ? AND u.user_id = ?
       ),
       (SELECT AVG(v.box)
          FROM user_questions v
         WHERE v.chapter_id = ? AND u.user_id = ?
       );


That's about all you can do to rewrite this particular query.  Depending on how your application works, it might make sense to obtain all of these statistics globally, instead of for particular user + chapter + module combinations.  In that case, you would write two queries, each with JOIN and GROUP BY clauses.  One query be joined by chapter and module conditions, and the other would be joined by chapter and user.

After rearranging the columns, it becomes more obvious that you used both user_questions.chpt_id and user_questions.chapter_id.  One of them is probably an error.