第一篇:实验项目卡-符号表管理+综合PL0编译器
编译原理实践
实验项目名称:符号表管理程序的设计与实现+ PL/0编译器的整合 实验次数:1次实验课 实验目的、内容与要求:
实验目的:
1.了解符号表的作用 2.掌握符号表的内容设计 3.掌握符号表的结构安排 4.掌握符号表的相关操作
5.完成PL/0编译器,体会整个编译过程。
实验内容:
1.了解语义分析阶段需要进行哪些语义检查同时要掌握符号的作用域原则
2.确定PL/0语言中有多少种符号,哪些符号需要填入符号表,这些符号都包含哪些属性,设计符号表项的数据结构,可采用统一的数据项结构,也可不同类别符号采用不同结构 3.确定符号表的组织方式:由于标识符有作用域,在组织符号表时,应该保证标识符作用域的有效性。随着分析程序的运行,会不断地进入或退出一些作用域,当退出某个作用域时,应该让这个作用域内的符号表项都作废。一般地,有两种作废方法,真删除法和加标记法法。4.定义符号表上的操作:符号表的创建、查找和删除
5.扫描程序生成符号表。假设符号表初始为空,在编译过程中,每当遇到对某个符号的定义,编译程序首先检查符号表,检查这个符号是否已经存在。若是属于重复定义,报告错误信息;若是一个新的名字,则填入符号表中。在编译过程中遇到对某个符号的使用时,编译器要检查符号表,检查该符号是否已经定义,并按照符号表中的定义来使用符号。6.将词法分析、语法分析、语义分析、符号表等各部分模块整合调试。
实验要求:
1.了解符号表在编译过程中的重要作用 2.掌握符号表应包含的符号的属性信息 3.了解符号表的组织原则 4.掌握符号表的操作
5.掌握符号表的可见性问题
6.完成并提交一个完整的PL/0编译器。
7.注意:此次实验结束后整个编译原理的实验也就完成了,所以这次实验报告在最后写一下整体的实验总结,也就是整个PL/0编译器完成过程中的经验教训、个人感想之类的。输入要求:一个PL/0文件。
示例(仅供参考),文件名称test.pl0,文件内容如下: const a=10;var
b,c;procedure p;
begin
c:=b+a;
end;begin
read(b);
while b#0 do
begin
call p;
write(c);
read(b);
end end.输出要求:各模块的结果输出,以及最后程序运行的示例。
示例,test.pl0运行结果如下: 请输入PL/0文件:
test.txt 0 error,Success!是否输出汇编代码?(Y/N): y 汇编代码:
0
jmp
0 1
jmp
0 2
int
0 3
lod 4
lit
0 5
opr
0 6
sto 7
opr
0
0 8
int
0 9
opr
0 10
sto
0 11
lod
0 12
lit
0
0 13
opr
0 14
jpc
0 15
cal
0 16
lod
0 17
opr
0 18
opr
0 19
opr
0 20
sto
0 21
jmp
0 22
opr
0
0 是否输出符号表?(Y/N): y 符号表:
const
a val=10 2
var
b lev=0 addr=3 3
var
c lev=0 addr=4 4
proc
p lev=0 addr=2 size=3 运行程序:
输入程序中变量值(0:退出): 3 13 输入程序中变量值(0:退出): 5 15 输入程序中变量值(0:退出): 0 请按任意键继续...实验详细设计说明: 符号表的作用:符号表是用来存放语言程序中出现的有关标识符的属性信息,这些信息集中反映了标识符的语义特征属性。在词法分析及语法分析过程中不断积累和更新表中的信息,并在词法分析到代码生成的各阶段,按各自的需要从表中获取不同的属性信息。不论编译策略是否分趟,符号表的作用和地位是完全一致的。符号表的设计规则 1)符号名
符号表中设置一个符号名域,存放该标识符,该域通常就是符号表的关键字域。通常在语言程序中标识符字符串是一个变量、函数或过程的唯一标志,因此在符号表中符号名作为表项之间的唯一区别一般不允许重名。从而该符号名与它在符号表中的位置建立起一一对应之关系,使得我们可以用一个符号在表中的位置(通常是一个整数)来替换该符号名。通常把一个标识符在符号表中的位置的整数值称之谓该标识符的内部代码。在经过分析处理的语言程序中标识符不再是一个字符串而是一个整数值,这不但便于识别比较而且缩短了表达的长度。2)符号的类型
标识符中除过程标识符之外,函数和变量标识符都具有数据类型属性。对于函数的数据类型指的是该函数值的数据类型。基本数据类型有整型、实型、字符型、逻辑型(布尔型)等,符号的类型属性从程序中该符号的定义中得到。变量符号的类型属性决定了该变量的数据在存储空间的存储格式,还决定了在该变量上可以施加的运算。3)符号的作用域及可视性
一般来说,定义该符号的位置及存储类关键字决定了该符号的作用域。C语言中一个外部变量的作用域是整个程序,因此一个外部变量符号的定义在整个程序中只能出现一次。一般来说一个变量的作用域就是该变量可以出现的场合,也就是说在某个变量作用域范围内该变量是可引用的,这就是变量可视性的作用域规则。PL/0语言允许过程嵌套定义,即外层变量和程序对内层可见,内层变量和函数对外层不可见,其中内层函数或变量将使外层的同名函数或变量不可见。4)符号表操作
在整个编译期间,对于符号表的操作大致可归纳为五类: •对给定名字,查询名字是否已在表中; •往表中填入一个新的名字;
•对给定名字,访问它的某些信息;
•对给定名字,填写或更新它的某些信息; •删除一个或一组无用的项。
不同种类的表格所涉及的操作往往也是不同的。上述五个方面只是一些基本的共同操作。5)符号表的数据结构
符号表项的组织传统上采用三种构造方法:即线性组织(队、栈),有序组织及散列组织。PL/0符号表设计
基于上述规则,构造PL/0名字表如下:
考虑本编译程序限于源代码数不超过200,且嵌套不超过3层,故采用线性结构的符号表组织,简化符号表的管理过程。所造名字表放在全程量一维数组TABLE表中。TX为索引表的指针,表中的每个元素为记录型数据。LEV给出层次,DX给出每层局部量当前已分配到的相对位置,可称地址指示器,每说明完一个变量后DX指示器加1。PL/0编译程序源代码中对名字表定义有: 说明类型的定义: //名字表中的类型 enum object{
constant,variable,procedur, };名字表的定义: struct tablestruct {
char name[10];
//名字
enum object kind;
//类型:const,var or procedur
int val;
//数值,仅const使用
int level;
//所处层,仅const不使用
int adr;
//地址,仅const不使用
int size;
//需要分配的数据空间,仅procedur使用 };struct tablestruct table[txmax];//名字表 例如:一个过程的说明部分为: CONST A=35,B=49; VAR C,D,E; PROCEDURE P; VAR G,...对常量,变量和过程说明分析后,在TABLE表中的信息如下表所示。:
NAME
KIND
VAL/LEVEL ADR SIZE
A B C D E P
CONSTANT CONSTANT VALUABLE VALUABLE VALUABLE PROCEDUR 35 49 LEV LEV LEV LEV DX DX+!DX+2 4
…
G …
VALUABLE …
LEV +1 …
D …
当说明语句被扫描后生成以上TABLE表,在TABLE表中,过程名P的ADR域,需要等到过程体的目标代码生成后,才能反填过程体的入口地址。P过程所在的层次为LEV,P过程定义的变量名G的层次为LEV+1。对过程还有一项数据SIZE,是记录该过程体运行时所需的数据空间。
TABLE表的表头索引TX和层次单元LEV都以BLOCK的参数形式出现。在主程序调用BLOCK时实参值都为0。每个过程中变量的相对起始位置在BLOCK内置初值DX∶=3。BLOCK中对符号表中TX,DX,CX的初始化: /* 编译程序主体
lev:当前分程序所在层
tx:名字表当前尾指针
fsys:当前模块后跟符号集合 */ int block(int lev,int tx,bool* fsys){ …
int dx;//名字分配到的相对地址
int tx0;//保留初始tx
int cx0;//保留初始cx
…
dx=3;//为该过程变量分配存储空间的起始位置,也就是相对基地址的偏移量 tx0=tx;//记录本层名字的初始位置
table[tx].adr=cx;//保留当前code指针值到过程名的adr域 …
code[table[tx0].adr].a=cx;//开始生成当前过程代码
table[tx0].adr=cx;//当前过程代码地址
table[tx0].size=dx;//身部分中每增加一条声明都会给dx增加1,声明部分已经结束,dx就是当前过程数据的size cx0=cx;… } 其中:
cx 已保留在过程名的adr域,等生成过程体入口的指令时,再由table[tx].adr中找到 cx将过程体入口返填到cx中,即(jmp,0,0)的第3区域。同时将过程体入口填到过程名的table[tx].adr中。符号表的管理 1)登录名字表
对每个过程(含主程序)说明的对象(变量,常量和过程)造符号表,登录标识符的属性,包括标识符的名字,种类,所在层次/值和分配的相对位置。登录信息由ENTER过程完成。/* 在名字表中加入一项
k:名字种类const,var,procedure ptx:名字表尾指针的指针,为了可以改变名字表尾指针的值 lev:名字所在的层次
pdx:dx为当前应分配的变量的相对地址,分配后要增加1 */ void enter(enum object k,int* ptx,int lev,int* pdx){
(*ptx)++;
strcpy(table[(*ptx)].name,id);//全局变量id中已存有当前名字的名字
table[(*ptx)].kind=k;
switch(k)
{
case constant://常量名字
if(num>amax)
{
error(31);//越界
num=0;
}
table[(*ptx)].val=num;
break;
case variable://变量名字
table[(*ptx)].level=lev;
table[(*ptx)].adr=(*pdx);
(*pdx)++;
break;
case procedur://过程名字
table[(*ptx)].level=lev;
break;
} } 2)名字表的查找 /* 查找名字的位置
找到则返回在名字表中的位置,否则返回0 idt:要查找的名字
tx:当前名字表尾指针 */ int position(char* idt,int tx){
int i;
strcpy(table[0].name,idt);
i=tx;
while(strcmp(table[i].name,idt)!=0)
{
i--;
}
return i;} 本编译程序仅实现了符号表的简单管理,有很多功能尚未实现,比如退出某作用域时要即时废除该作用域的符号表项等,同学们可以自己实现。
第二篇:编译原理实验 编译器 综合报告(附源代码)
编译原理 编译器综合实验
---------------工程精品
神刀公子
一. 实验背景
编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 目标代码(object code)→ 链接器(Linker)→ 可执行程序(executables)高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言(High-level language),如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。
二. 算法设计
典型的编译器输出是由包含入口点的名字和地址,以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的EXE, 词法分析程序 语法分析程序 语义分析程序 编译器。不断完善,不断改进。渐变的过程。
。。函数。。
void scanner();//扫描 void lrparser();
void staBlock(int *nChain);//语句块 void staString(int *nChain);//语句串 void sta(int *nChain);//语句 void fuzhi();//赋值语句
void tiaojian(int *nChain);//条件语句 void xunhuan();//循环语句 char* E();//Expresiion表达式 char* T();//Term项 char* F();//Factor因子
char *newTemp();//自动生成临时变量 void backpatch(int p,int t);//回填
int merge(int p1,int p2);//合并p1和p2 void emit(char *res,char *num1,char *op,char *num2);//生成四元式
截图说明:
综合输入:(赋值,循环,条件。。结合,自己定义即可)
源代码:
//************编译器******************** // //***Erin*** //***软件工程0801班*** //***HUST*** // //**************************************
#include
char prog[80];//存放所有输入字符
char token[8];//存放词组
char ch;//单个字符
int syn,p,m,n,i;//syn:种别编码
double sum;
int count;
int isSignal;//是否带正负号(0不带,1负号,2正号)int isError;int isDecimal;//是否是小数
double decimal;//小数
int isExp;//是否是指数
int index;//指数幂
int isNegative;//是否带负号
double temp;
int temp2;
int repeat;//是否连续出现+,{
if(syn==22)//+
strcpy(op,“+”);
else
strcpy(op,“-”);
scanner();
strcpy(num2,T());
strcpy(res,newTemp());
emit(res,num1,op,num2);
strcpy(num1,res);} return num1;}
char* T()//Term项 { char *res,*num1,*op,*num2;res=(char *)malloc(10);num1=(char *)malloc(10);op=(char *)malloc(10);num2=(char *)malloc(10);strcpy(num1,F());while((syn==24)||(syn==25))//* / {
if(syn==24)
strcpy(op,“*”);
else
strcpy(op,“/”);
scanner();
strcpy(num2,F());
strcpy(res,newTemp());
emit(res,num1,op,num2);
strcpy(num1,res);} return num1;}
char* F()//Factor因子 { char *res;
res=(char *)malloc(10);if(syn==10)//字符串 { strcpy(res,token);scanner();} else if(syn==20)//二进制数 {
itoa((int)sum,res,10);//整数转换为字符串
scanner();} else if(syn==26)//({
scanner();
res=E();
if(syn==27)//)
{
scanner();
}
else isError=1;} else
isError=1;return res;}
char *newTemp(){ char *p;char varTemp[10];p=(char *)malloc(10);kk++;itoa(kk,varTemp,10);strcpy(p+1,varTemp);p[0]='T';return p;}
//将p所链接的每个四元式的第四个分量都回填t void backpatch(int p,int t){ int w,circle=p;while(circle)//circle不为0的时候
{
} w=atoi(fourCom[circle].result);//四元式circle第四分量内容
//strcpy(fourCom[circle].result,t);//把t填进四元式circle的第四分量
sprintf(fourCom[circle].result,“%d”,t);circle=w;//w记录的是链条上下一个四元式,移动!} return;int merge(int p1,int p2)//合并p1和p2 { char circle,nResult;if(p2==0)
nResult=p1;else {
nResult=circle=p2;
} while(atoi(fourCom[circle].result))//四元式第四个分量不为0 { circle=atoi(fourCom[circle].result);
//strcpy(fourCom[circle].result,p1);sprintf(fourCom[circle].result,“%s”,p1);} //目的是用p1的值覆盖0 return nResult;//p2是头,p1覆盖0,接在p2后边 }
void emit(char *res,char *num1,char *op,char *num2){ strcpy(fourCom[nextq].result,res);strcpy(fourCom[nextq].arg1,num1);strcpy(fourCom[nextq].opera,op);strcpy(fourCom[nextq].arg2,num2);nextq++;}
void scanner()
{
sum=0;
decimal=0;
m=0;
for(n=0;n<8;n++)
token[n]=NULL;
ch=prog[p++];//从prog中读出一个字符到ch中
while(ch==' '||ch=='n')//跳过空字符(无效输入)
ch=prog[p++];
if(((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z')))//ch是字母字符
{
while(((ch>='a')&&(ch<='z'))||((ch>='A')&&(ch<='Z'))||((ch>='0')&&(ch<='9')))
{
token[m++]=ch;//ch=>token
ch=prog[p++];//读下一个字符
}
token[m++]=' ';
p--;//回退一格
syn=10;//标识符
//如果是“begin”,“if”,“then”,“while”,“do”,“end”标识符中的一个
for(n=0;n<9;n++)
if(strcmp(token,rwtab[n])==0)
{
syn=n+1;
break;
}
}
else if((ch>='0')&&(ch<='9'))
{
IsNum:
if(isSignal==1)
{
//token[m++]='-';
}
while((ch>='0')&&(ch<='9'))
{
sum=sum*10+ch-'0';//ch中数字本身是当做字符存放的ch=prog[p++];
}
if(ch=='.')
{
isDecimal=1;
ch=prog[p++];
count=0;//之前忘了清零,123.123+123.123#两个浮点数就无法识别
while((ch>='0')&&(ch<='9'))
{
//pow(x,y)计算x的y次幂
temp=(ch-'0')*pow(0.1,++count);
decimal=decimal+temp;
//AddToDec();
ch=prog[p++];
}
sum=sum+decimal;
}
if(ch=='e'||ch=='E')
{
isExp=1;
ch=prog[p++];
if(ch=='-')
{
isNegative=1;
ch=prog[p++];
}
while((ch>='0')&&(ch<='9'))
{
//指数
index=index*10+ch-'0';
ch=prog[p++];
}
//10的幂
//123e3代表123*10(3)
//sum=sum*pow(10,index);是错误的if(isNegative)
sum=sum*pow(0.1,index);
else
sum=sum*pow(10,index);
}
if(isSignal==1)
{
sum=-sum;
isSignal=0;
}
p--;
syn=20;
}
else switch(ch)
{
case '<':
m=0;
token[m++]=ch;
ch=prog[p++];
if(ch=='=')
{
syn=35;
token[m++]=ch;
}
else
{
syn=34;
p--;
}
break;
case '>':
m=0;
token[m++]=ch;
ch=prog[p++];
if(ch=='=')
{
syn=33;
token[m++]=ch;
}
else
{
syn=32;
p--;
}
break;
case '=':
m=0;
token[m++]=ch;
ch=prog[p++];
if(ch=='=')
{
syn=36;
token[m++]=ch;
}
else
{
syn=21;
p--;
}
break;
case '+':
temp2=prog[p];
token[m++]=ch;
if((temp2>='0')&&(temp2<='9')&&(repeat==1))
{
isSignal=2;
ch=prog[p++];
repeat=0;
goto IsNum;
}
if(((temp2=='+')||(temp2=='-'))&&(repeat==0))的+,-视为正负号
{
repeat=1;
//ch=prog[p++];
}
syn=22;
break;
case '-':
temp2=prog[p];
token[m++]=ch;
if((temp2>='0')&&(temp2<='9')&&(repeat==1))
{
isSignal=1;
ch=prog[p++];//读“-”下一个字符
repeat=0;
goto IsNum;//转到数字的识别
}
if(((temp2=='+')||(temp2=='-'))&&(repeat==0))的+,-视为正负号
{
repeat=1;//预言会重复
//如果重复出现符号,才将后边//如果重复出现符号,才将后边
//ch=prog[p++];//读下一个字符
}
syn=23;
break;
case '*':
temp2=prog[p];
token[m++]=ch;
if(temp2=='+')
{
isSignal=2;
repeat=1;
}
else if(temp2=='-')
{
isSignal=1;
repeat=1;
}
syn=24;
break;
case '/':
syn=25;
token[m++]=ch;
break;
case '(':
temp2=prog[p];
token[m++]=ch;
if(temp2=='+')
{
isSignal=2;
repeat=1;
}
else if(temp2=='-')
{
isSignal=1;
repeat=1;
}
syn=26;
break;
case ')':
syn=27;
token[m++]=ch;
break;
case '{':
syn=28;
token[m++]=ch;
break;
case '}':
syn=29;
token[m++]=ch;
break;
case ',':
syn=30;
token[m++]=ch;
break;
case ';':
syn=31;
token[m++]=ch;
break;
case'#':
syn=0;
token[m++]=ch;
break;
default:
syn=-1;
}
}
第三篇:IT项目管理实验一
实验报告一
一.各项目管理知识领域常用项目管理工具及技术
集成管理:项目挑选方法,项目管理方法论,利益相关者分析,项目章程,项目管理计划,项目管理软件,变更请求,变更控制委员会,项目评审会议,经验教训报告
范围管理:范围说明,工作分解结构,工作说明,需求分析,范围管理计划,范围验证技术,范围变更技术
时间管理:甘特图(菜单——工具——选项——日程——视图——默认视图)项目网络图关键路径分析赶工 快速追踪 进度绩效测量
成本管理:净现值,投资回报率,回收分析,挣值管理,项目组合管理,成本估算,成本管理计划,成本基线
质量管理:质量控制,核减清单,质量控制图,帕累托图,鱼骨图,成熟度模型,统计方法
人力资源管理:激励技术,同理聆听,责任分配矩阵,项目组织图,资源柱状图,团队建设练习
沟通管理:沟通管理计划,开工会议,冲突管理,传播媒体选择,现状和进程报告,虚拟沟通,模板,项目网站
风险管理:风险管理计划,风险登记册,概率/影响矩阵,风险分级
采购管理:自制-购买分析,合同,需求建议书,资源选择,供应商评价矩阵
二,项目设计
养生医疗开发系统
包括用户需求确认。开发环境准备。系统设计:概要设计,数据库设计,详细设计。数据库开发系统管理,结构管理,基本信息,人员登记收费标准,会员管理,医师管理,财务管理,统计报表,测试提交,用户短阶段维修。
在本次实验中通过project软件对系统的开发设计过程中的项目任务进行有效处理规划并核算其资源成本消耗及应用情况
本项目设计主要为了开发养生医疗系统,为养生会所提供一个良好的收费和登记机制。
第四篇:IT项目管理实验资料
《IT项目管理》实验
一、实验目的1、掌握Microsoft Office Project 2003的功能和组成2、学会使用Microsoft Office Project 2003制定项目进度计划、管理资源和进行优化
3、能够就一个具体的项目进行管理和控制
二、实验任务
1、通过看视频与操作,熟悉微软项目管理的功能。
2、参考书上第九章内容,每位同学设计一个简单项目,完成以下七项内容,要求每位同学的项目不同。
编制该项目的项目章程;
绘制该项目的生命期图;
绘制该项目的工作分解结构;
绘制该项目的网络图与甘特图;
编制该项目的成本计划表;
进行该项目的资源管理;
尝试进行该项目的进度和成本控制;
三、完成以上实验内容,递交实验报告,实验结果可截图并辅以文字说明,实验报告周二上课时交。
第五篇:河北省基础教育教学改革综合实验项目
河北省基础教育教学改革综合实验项目
丰南实验区子项目之二
“教师专业化成长管理与培训策略的研究”
实 施 方 案
一、问题研究的背景
教师专业化是当今世界教师教育改革和教师职业发展的共同趋势。它对于教师树立专业自尊,明晰专业发展方向,增强专业学习的责任感和紧迫感,提高教师的专业地位与社会地位,增强教师职业的吸引力等有着积极而重要的意义。随着教师职业越来越被确认为一种专门化职业,教师专业化成长的理论研究和实践探索,已成为热点; 教师专业化的研究和探索、改革已成为当代教育改革的中心主题之一。
新课程改革带给学校和教师更多的机遇甚至惊喜的同时,更多的是带给我们县域教师许多的挑战。教师如何将新新课程理念转化为教育教学实践、外化为教育的行为,是课改下教师成长的“瓶颈”,而课题研究是实现教师教育理念向教育实践转化的中介。课题研究为教师角色的转变构筑了一个理论与实践的互动平台,成为促进教师专业化成长的主渠道。
新课程改革以来,我区教师的专业化得到了前所未有的重视,各种培训、评比等教研活动开展得如火如荼,同时诸如名师工程、教师读书会、学科沙龙等各种新型培养模式也层出不穷,为教师的专业化发展提供了广阔的空间和平台,但是仍然存在着教师培训内容单
一、形式单调、方法陈旧,重理论轻实践,缺乏针对性和实效性;名师及骨干教师的培养和使用没有落到实处,其示范带动效应不明显等一系列问题。为此,我区申报 “中小学教师专业化成长策略的研究”这一子课题加以研究,既是着眼于当前教师教育工作大计,也立足于我区中小学教师继续教育工作的现实需要,还考虑到课题组成员的研究实力及可利用的研究资源等因素而确定的。它将对提高教师专业素质,为基础教育课程改革向纵深发展提供人力资源保障,具有十分重大的理论研究价值和重大的现实意义。
二、问题研究的理论依据。
1.关于教师专业化基本概念的理论界定。
教师专业化是指 “个人成为教学职业的成员,并且在教学中具有越来越成熟的作用这样一个转变过程。”教师专业化过程并不以进入这个职业作为结束点,也不在早期教师职业的任何一点上结束。其基本含义是:第一,教师专业既包括学科专业性,也包括教育专业性;第二,国家有教师教育的专门机构、专门教育内容和措施;第三,国家有对教师资格和教师教育机构的认定制度和管理制度;第四,教师专业发展是一个持续不断的过程,教师专业化也是一个发展的概念,既是一种状态,又是一个不断深化的过程。
2.国外教育机构关于“ 教师专业成长”的相关理论。
1966年联合国教科文组织在巴黎召开了“教师地位与政府间特别会议”,会议提出,应当把教师工作看作是一门专业,它需要教师的专门知识和特别才能,并需要经过长期的努力与研究才能得以维持。1986年霍尔姆斯小组和卡内基教学专业研究工作组明确提出了教学专业化这一概念,并将其视为提高学校教育质量的必要途径。苏霍姆林斯基认为,要提高教学质量,一要确立教学工作的专业性地位,二要建立起与这一职业相应的衡量标准。
3.我国“教育改革”与“素质教育”的有关理论。
在《中共中央国务院关于深化教育改革、全面推进素质教育的决定》中,提出优化结构、建设全面推进素质教育的高质量的教师队伍,强调要把提高教师实施素质教育的能力和水平作为师资培养、培训的重点,开展以培训全体教师为目标、骨干教师为重点的继续教育,使教师的整体素质明显提高,以造就一支思想素质好、业务水平高、创新能力强的高质量教师队伍。
三、问题研究的目标
1.建立科学有效的教师专业化成长管理机制,使本课题研究具有科学性和规范性。
2.在课题研究的过程中,探索教师培训的有效形式,形成具有本区特色的教师培训模式。
3.以活动为载体,寻求激励教师专业化成长的有效方法,赋予教师的专业成长以生机和活力。
4.建立、健全教师流动机制,充分挖掘全体教师的潜力,提升我区教育教学质量。
5.逐步完善教师业绩考评方案,增强教师提升自身素质的内驱力。6.以《阅读伴我成长》课题研究为载体,激发教师的读书热情,形成读中学习、读中感悟、读后实践的良好局面,在阅读中提升教师的专业素质。
四、问题研究的内容
为了保障教师专业化成长课题的深入研究,我们将通过教师培训和研究机制、教师培养和使用机制、教师流动和补充机制、教师考试和考评机制等五项机制的研究,使课题研究规范化,取得相应的效果。
1.培训形式的研究。通过区级、学区级、中心校级三级教研特点和作用的研究;学区培训形式和内容的研究;研训一体模式的研究;网上论坛结构和方式的研究,促进教师业务理论及教育教学能力的不断提升。
2.激励机制促进教师专业成长的研究。通过“教学百花奖”、“教师业务考试”、“三名工程”、“骨干教师六个一工程”“骨干教师讲师团”增强教师提高业务素质的内驱力。
3.以“三名工程”为载体,发挥名师和骨干教师的传、帮、带作用,促进教师专业化成长的研究。继续深入开展“青蓝杯工程”、“名师工作室”等活动,发挥名师和骨干教师的传、帮、带作用,促进青年教师的专业化成长。
4.对教师流动机制的研究,发挥教师的潜能,促进学校教育教学水平的提高。坚持城镇教师下乡支教和轮岗制度,促进教师整体专业水平的不断提升。
5.教师的业绩考评,促进教师专业成长的研究。继续完善和使用06年全区统一制定的多元化教师业绩考评方案,达到对教师科学、公正的考评。
6.深入开展“阅读伴我成长课题研究”,促进全体教师专业化成长。制定切实可行的读书制度,开展多种形式的读书演讲、朗读比赛等活动,激发教师的读书热情,促进教师的师德修养、教育理论水平、教育教学能力的不断提高。
7.坚持推行教师专业化成长档案的探索与研究,从师德师风、教育教学、教育科研、继续教育等方面取得的成绩展示教师的成长过程,促进教师教育教学综合能力的不断提高,形成自己独特的教学风格。
五、课题研究的方法
1.调查法。运用调查研究法,对我区教师目前的专业发展情况做调查,综合运用各种调查方法和手段,有计划、有步骤地收集和分析相关资料,查找教师专业化成长所存在的问题,为课题研究提供充足的事实依据。
2.行动研究法。以教师专业成长中存在的问题为切入点,以问题解决为过程,扎实开展课题研究。通过对典型案例的总结、反思、实践,寻求促进教师专业化成长的有效途径。通过经验推广,促进全区教师专业化水平的不断提高。
3.教育叙事法。通过继续组织骨干教师、青年教师开展“我的成长经历”征文比赛或演讲比赛,引领教师讲述自身成长过程中真实的细节、经验,在相互学习中促进教师的专业化成长。
六、课题研究的步骤:
本课题研究周期定为三年,主要分为以下几个步骤来具体实施
(一)准备阶段(2009年7月——2009年9月)。
对目前我区中小学教师专业化现状和发展状况进行问卷调查和访谈工作,进行课题选区题可行性论证,成立课题组,形成比较完善的研究方案和实施计划。培训相关人员和落实分工,明确责任。制定研究方案,并向课题研究管理办公室申报课题立项申请。
(二)专家审定阶段(2009年10月——2009年11月)。修正方案,并请有关专家指导,形成定稿。
(三)课题研究的实施阶段(2009年12月——2012年1月)。
1.课题组围绕课题研究内容,组织开展形式多样的专题培训学习活动,利用培训学习活动进行研讨、交流和总结课题的实验研究情况,推动课题研究的有效进行。
(1)培训校级骨干和区级骨干,创建有效学校,培养有效教师,形成阶段性研究成果。
(2)学科教师培训,探索有效教学,提高有效技能,形成阶段性研究成果。
(3)构建校本研修制度:实现有效研修,形成阶段性研究成果。
2.课题研究组在每个学期,组织中心课题组成员就基层学校校本研修和课题研究情况进行一次督导,搜集有关信息,对实验过程中出现的问题及时进行解决,保证实验顺利进行。
(四)总结提高阶段。(2012年2月——2012年7月)1.课题组对研究情况进行梳理,提炼研究成果。2.总结课题研究成果,撰写研究报告、论文。
3.组织召开课题研究成果汇报会、课题研究成果验收鉴定会。4.根据需要对部分研究成果进行推广。
5.邀请省项目组专家对项目研究成果进行鉴定。
七、课题研究的组织管理 1.课题研究主体
由教育局牵引,中小学教研室、人事科、教师进修学校具体实施。2.实验学校
银丰学校、黑沿子学校、四中、南孙中学、王兰庄中学、钱营学校、胥各庄学校小学部、钱营学校小学部、大新庄小学、实验小学西、群立小学、稻地小学。
八、课题研究预期成果 1.专题研究论文
2.课题研究报告、论文集和书籍 3.教师培训资料汇编
4.骨干教师、青年教师管理规章制度 5.骨干教师教育教学业绩汇编 6.其它
九、课题实施保障措施
为保障课题实验与研究工作的顺利进行,如期完成实验任务,建立和实行以下保障措施:
1.加强组织领导:成立由县教育局局长段煦宁同志任组长,教育局副局长刘天悦、李大柱、于善光为副组长,办公室、教研室、督导室、教育科、计财科、人事科、电教科等部门负责人组成的课题研究领导小组,加强对课题研究工作的领导和协调。
2.实行项目责任制:对课题组成员实行目标责任制。按照实施步骤逐阶段结项,不断形成阶段性成果。建立健全各项规章制度,完善各种评价体系,明确职
责,分工合作,为课题研究创建良好的工作环境。
3.纳入目标管理:本课题列入“十一五”全区中小学教师专业成长和中小学校长培训管理范畴,与各中小学教育教学工作评估工作挂钩,与年终综合考核捆绑。
4.实施联动机制:优化整合教研、培训、电教等资源,构建“多功能、大服务”的研修网络。探索县域城乡中小学校际间联动机制,建立城乡教师合作学习机制,实现教育资源共享,提高我区教师的整体专业化水平。
5.开辟教师论坛:每年组织一次项目成果收集、交流与评比活动,及时收集、及时反馈、及时评价,使项目不断滚动,不断发展。利用“学科资源中心”网站,开辟教师专业化论坛,实现教师间的经验交流和资源共享,打造一批“学习型学校”、“学习型专家”、“学习型教师”,实现教师专业化共同成长。
6.优化保障体系:筹措足够的课题实验与研究经费,专项用于课题实验与研究工作。为使课题研究顺利进行,各中小学要根据实际需要订购课题相关的指导教材。
丰南区课题组
2009年8月5日