Self-learning at the introductory level by having some programming assignments that include using some simple features not covered in class
Note taking at the introductory level by not posting lecture notes and holding students responsible for the content.
Technical writing at the application level by requiring students to do a formal software development report and requiring quality writing (and grading the quality of the writing), Also by the end of the semester by refusing to accept reports that don't meet a bare min. standard (such as standards, spell check, using bullet lists as appropriate.
Team work at the introductory level by having at least two assignments where students are working in teams
Professionalism at the introductory level by having students estimate how long it takes to write programs and then analyze their estimate based on how long it actually took. They will also comment on what they learned and what they would want to to better with a program if they could.
Cybersecurity at an introductory level by requiring students to document possible invalid input what happens for all programs. By the end of the semester, they should handle some of the invalid input (i.e. secure programming).
Ethics at an introductory level by having at least one program assigned that could have ethical implications and having the students discuss that in their reports.