How software works: Computational thinking and ethics before CS1 | IEEE Conference Publication | IEEE Xplore