Learning Programming Practice and Programming Theory in the Computer Laboratory | AMiner