Database schema:

CREATE TABLE "advisedBy" (
	p_id INTEGER -- example: ['9', '6'],
	p_id_dummy INTEGER -- example: ['5', '7'],
	PRIMARY KEY (p_id, p_id_dummy), 
	CONSTRAINT fk_advisedby_person FOREIGN KEY(p_id, p_id_dummy) REFERENCES person (p_id, p_id)
)


CREATE TABLE "taughtBy" (
	course_id INTEGER -- example: ['0', '1'],
	p_id INTEGER -- example: ['180', '40'],
	PRIMARY KEY (course_id, p_id), 
	CONSTRAINT fk_taughtby_person FOREIGN KEY(p_id) REFERENCES person (p_id),
	CONSTRAINT fk_taughtby_course FOREIGN KEY(course_id) REFERENCES course (course_id)
)


CREATE TABLE course (
	course_id INTEGER -- example: ['0', '1'],
	"courseLevel" TEXT -- example: ['Level_300', 'Level_500'],
	PRIMARY KEY (course_id)
)


CREATE TABLE person (
	p_id INTEGER -- example: ['4', '3'],
	professor INTEGER -- example: ['0', '1'],
	student INTEGER -- example: ['0', '1'],
	"hasPosition" TEXT -- example: ['0', 'Faculty'],
	"inPhase" TEXT -- example: ['0', 'Post_Quals'],
	"yearsInProgram" TEXT -- example: ['0', 'Year_2'],
	PRIMARY KEY (p_id)
)

Question: How many professors teaches basic or medium undergraduate courses?
Evidence: professors refers to taughtBy.p_id; basic or medium undergraduate courses refers to couresLevel = 'Level_300'

SQL:
SELECT COUNT(*) FROM course AS T1 INNER JOIN taughtBy AS T2 ON T1.course_id = T2.course_id WHERE T1.courseLevel = 'Level_300'