반환 지향형 프로그래밍
반환 지향 프로그래밍은 스택 스매싱의 진화된 버전이다. 일반적으로 공격들의 이러한 종류들은 상대방이 프로그램의 버그(주로 버퍼 오버런)를 이용함으로써 콜 스택을 조작할 때 발생한다. 버퍼 오버런 시에 사용자가 제공하는 데이터를 적절한 경계 검사 없이 메모리에 저장하는 함수는 적정한 양보다 더 많은 데이터를 받아들일 수 있다. 데이터가 스택에 겹쳐써지면 초과된 데이터는 함수의 변수에 할당된 공간을 넘치게 되고 반환 주소도 겹쳐쓰게 된다. 이 주소는 이후에 함수에 의해서 제어 흐름을 다시 호출자로 넘겨줄 때 사용된다. 만약 겹쳐써졌다면 제어 흐름은 새로운 반환 주소로 넘겨지게 된다.
프로그래밍 심리학
후기 피아제의 인지발달이론에 근거하여 컴퓨터 프로그래밍 능력의 발전단계를 설명하는 이론이다. 피아제가 주장한 발달이론의 감각운동기, 전조작기, 구체적조작기, 형식적 조작기의 발전과정이 컴퓨터 프로그래밍에 적용한 모델이다. 초보 프로그래머는 신뢰할 수 있는 코드를 수동으로 실행 할 수 없으며 변수의 최종값을 결정할 수 없다. 이러한 단계를 감각운동기(Sensorimotor)에 있다고 정의한다. 초보 프로그래머는 코드의 추적(Trace)를 안정적으로 할 수 있지만 전체적인 구성을 보지 못하는 단계가 전조작기(Preoperational) 라고 한다. 이 단계에서 프로그래머는 귀납적 접근을 하므로 프로젝트를 설계할 수 없는 단계이다. 연역 추론이 가능한 초보 프로그래머는 구체적 조작기(concrete operational)에 이르렀다고 말 할 수 있습니다. 이 단계에서는 코드이 읽기와 변수들의 값을 추론 할 수 있으나 비교적 짧은 프로그램에서 가능한 상태입니다. 형식적 조작기(Formal operational)에 이른 프로그래머는 설명문으로 문제를 추상화하고 하위 문제를 생성하고 그 하위 문제를 결과로 만들어 내고, 재구성하고 평가하는 것을 반복적으로 수행할 수 있습니다.