Programming Process, Patterns and Behaviors: Insights from Keystroke Analysis of CS1 Students